electron的一些交互

1、将打开的新窗口定向到当前窗口

app.on('web-contents-created', (event:Event, contents:WebContents) => {
  if(contents.getType() === 'browserView'){
    contents.on('new-window', (event:NewWindowWebContentsEvent, url: string) => {
      contents.loadURL(url)
      event.preventDefault()
    })
  }
})

2、proload.js的使用

#主进程引入
webPreferences: {
    nodeIntegration: false,
    contextIsolation: false,
    preload: `${__dirname}/preload.js`
}


#proload.js文件
const { ipcRenderer } = require('electron')
window.ipcRenderer = ipcRenderer


# 三方网页脚本执行
winBody.webContents.on('did-start-navigation', () => {
    winBody.webContents.executeJavaScript(`
    	console.log('did-start-navigation')
    `)
})

3、mutation属性监听html元素节点变化 mutation

const targetNode = document.getElementById('root')

if(targetNode){
    const observer = new MutationObserver(callback)

    // 以上述配置开始观察目标节点
    observer.observe(targetNode, {attributes: true, childList: true, subtree: true});

    function callback(mutationsList, observer){

        for(let mutation of mutationsList) {

            console.log('遍历元素执行逻辑操作')
        }
    }

 4、获取不同环境的根目录地址

# 读取本地不同环境静态资源
let savedPath = ''
switch (process.env.NODE_ENV) {
  case 'development':
    savedPath = path.join(__dirname, '../public')
    break;
  case 'production':
    savedPath = process.resourcesPath
    break;
}

5、electron监听第三方网页所有请求

import { session } from 'electron'

session.defaultSession.webRequest.onCompleted({ urls: [`https://xxxxxx.com/*`] }, (details) => {
    if ((details.resourceType).toString() === 'xhr') {
      win.webContents.executeJavaScript(`
        // 执行操作
      `)
    }
  })

6、禁止复制、禁止截屏

// 禁止截图
win.setContentProtection(true)

// 禁止复制(css样式控制)
* { user-select: none; }
  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Electron 是一个基于 Chromium 和 Node.js 的开源框架,可以用来构建跨平台的桌面应用程序。在 Electron 中,浏览器和主进程之间的交互是通过 IPC(进程间通信)实现的。 在 Electron 中,主进程是一个 Node.js 运行环境,负责管理应用程序的生命周期和执行一些底层操作,而渲染进程则是一个 Chromium 浏览器实例,用于展示界面和执行前端代码。 要实现 Electron 和浏览器之间的交互,可以使用 Electron 提供的 IPC 模块。主进程和渲染进程可以通过 IPC 模块发送消息和接收消息。 在渲染进程中,可以使用 `ipcRenderer` 对象来发送消息给主进程,代码示例如下: ```javascript const { ipcRenderer } = require('electron'); ipcRenderer.send('message', 'Hello from renderer process!'); // 接收主进程的回复消息 ipcRenderer.on('reply', (event, arg) => { console.log(arg); // 打印主进程回复的消息 }); ``` 在主进程中,可以使用 `ipcMain` 对象来监听渲染进程发送的消息,并回复消息,代码示例如下: ```javascript const { ipcMain } = require('electron'); // 监听渲染进程发送的消息 ipcMain.on('message', (event, arg) => { console.log(arg); // 打印渲染进程发送的消息 // 回复消息给渲染进程 event.reply('reply', 'Hello from main process!'); }); ``` 通过这种方式,你可以在 Electron 应用程序中实现浏览器和主进程之间的双向通信。可以根据具体的业务需求,定义不同的消息类型和处理逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值