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; }