gpt4 book ai didi

javascript - contextIsolation 的默认值已弃用,并将在 Electron 的 future 版本中从 false 更改为 true

转载 作者:行者123 更新时间:2023-12-03 12:23:55 27 4
gpt4 key购买 nike

我是 Electron.js 的新手。我正在关注一个学习 Electron 的 youtube 教程,但是这个“contextIsolation 的默认值已被弃用,并且将在 Electron 的 future 版本中从 false 更改为 true。有关更多信息,请参阅 https://github.com/electron/electron/issues/23506”出现在我的控制台中。我的 main.js 文件如下:


const electron = require('electron');
const url = require('url');
const path = require('path');

const {app , BrowserWindow,Menu}=electron;

let mainWindow;

//Listen for app to be ready
app.on('ready',function() {
//create new window
mainWindow=new BrowserWindow({});
//load html into window
mainWindow.loadURL(url.format({
pathname:path.join(__dirname,'mainWindow.html'),
protocol:'file',
slashes:true
}))


//Quit app when closed
mainWindow.on('closed',function(){
app.quit();
})
//build menu from template
const mainMenu=Menu.buildFromTemplate(mainMenuTemplate);
//insert menu
Menu.setApplicationMenu(mainMenu);
});

//handle create add window
function createAddWindow(){
//create new window
addWindow=new BrowserWindow({
width:300,
height:200,
title:'add shopping list item'
});
//load html into window
addWindow.loadURL(url.format({
pathname:path.join(__dirname,'addWndow.html'),
protocol:'file',
slashes:true
}));
//Garbage collection handle
addWindow.on('close',function(){
addWindow=null;
})
}



//Create Menu template
const mainMenuTemplate=[
{
label:'File',
submenu:[
{
label:'Add Item',
click(){
createAddWindow();
}
},
{
label:'Clear Items'
},
{
label:'Quit',
accelerator:process.platform== 'darwin' ? 'command+Q' : 'ctrl+Q',
click(){
app.quit(); }
},

]

}
]

最佳答案

这只是一个弃用警告,它不会影响您的任何代码。由于您没有明确设置 contextIsolation 的值,因此使用默认值,一旦更改,您的应用程序将不再以相同的方式运行。

contextIsolation 是一个可以在 webPreferences 中为 BrowserWindow 传递的选项,如下所示:

const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
contextIsolation: true
}
});

Electron 团队决定显示此警告,因为 contextIsolation 是一个深刻改变 Electron 窗口工作方式的选项。默认情况下,在执行附加到 HTML 页面的脚本之前(在执行预加载脚本之后),Node 全局变量会以编程方式从渲染器上下文中剥离,这会留下一些漏洞(例如 here 演示的漏洞)。

contextIsolation 确保两个上下文(预加载脚本和渲染器脚本)保持完全隔离,通过 contextBridge 显式公开的 API 除外。建议使用 contextIsolation 除非您明确不加载任何外部内容,这就是默认值将被更改的原因。 More on Electron security .

关于javascript - contextIsolation 的默认值已弃用,并将在 Electron 的 future 版本中从 false 更改为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65967137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com