在主窗口中,我使用此代码在单击时打开一个窗口
pwin = new BrowserWindow({
width: 355,
height: 250
})
pwin.loadURL(`file://${__dirname}/players/jwplayer.html`);
// pwin.setMenu(null)
pwin.webContents.on('did-finish-load', () => {
pwin.webContents.send('link', link);
pwin.webContents.send('name', title);
});
在新窗口上我有一个修改请求 header 的代码
session.defaultSession.webRequest.onBeforeSendHeaders(['*://*./*'], (details, callback) => {
if (details.url.indexOf('okaystreamz') > -1) {
details.requestHeaders['User-Agent'] = 'tvingoplus@livetv.tvingo1Z!2018';
}
callback({
cancel: false,
requestHeaders: details.requestHeaders
})
});
当我第一次打开 pwin 时,它可以工作。 当我关闭它并再次打开它时,出现此错误
“尝试调用已关闭或释放的渲染器窗口中的函数。”
任何帮助将不胜感激
最佳答案
您需要在窗口关闭时发生一个事件来删除监听器。
来自文档:⚠️ 仅使用最后一个附加的监听器。传递 null 作为监听器将取消订阅该事件。
https://electronjs.org/docs/api/web-request
例如。在你的函数后面添加这个(注意用 null 代替监听器):
window.addEventListener('beforeunload', function(event) {
session.defaultSession.webRequest.onBeforeSendHeaders( ['*://*./*'], null)
})
关于node.js - 已关闭或释放的渲染器窗口中的 Electron session webrequest 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238299/