当我在关闭nodeIntegration的情况下创建自定义窗口控件(如关闭、最小化/最大化和还原)时,我被卡住了。我在呈现器的本地HTML文件中创建了这些按钮。
main.js
mainWindow = new BrowserWindow({
x, y, width, height,
frame: false,
show: false,
webPreferences: { devTools: true }
});
mainWindow.loadURL(url.format({
protocol: 'file:',
slashes: true,
pathname: path.join(__dirname, 'assets', 'index.html')
}));
首页.html
<div id='minimize' class='noSelect'></div>
<div id='maximize' class='noSelect'></div>
<div id='restore' class='noSelect'></div>
<div id='close' class='noSelect'></div>
<script type='text/javascript' src='../assets/js/index.js'></script>
默认情况下,nodeIntegration
已关闭,因此index.js
无法访问Node。但是,我需要能够为按钮添加功能以关闭、最小化/最大化和恢复窗口。
index.js
const { remote } = require('electron');
const mainWindow = remote.getCurrentWindow();
document.getElementById('close').addEventListener('click', () => {
mainWindow.close();
});
这不起作用因为nodeIntegration被禁用了。在本地页面启用它是否安全?如果不安全,有什么安全的方法可以做到这一点?
这不会起作用,因为nodeIntegration被禁用了。在本地页面启用它是否安全?如果不安全,有什么安全的方法可以实现这个目的?
preload
脚本的角度怎么样?如果不启用nodeIntegration,那能行吗? - AfterShotzZHDnodeIntegration
的情况下使用IPC的示例,请参阅https://dev59.com/91QK5IYBdhLWcg3wN9VV#57656281 - Luke H