从主窗口中,我正在使用此代码在单击时打开一个窗口
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);
});
在新窗口中,我有一个修改请求标头的代码
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时,它正在工作。 当我关闭它并再次打开它时,出现此错误
“试图在已关闭或释放的渲染器窗口中调用函数。”
任何帮助将不胜感激
答案 0 :(得分:1)
您需要在关闭窗口时删除监听器。
从文档中:⚠️ Only the last attached listener will be used. Passing null as listener will unsubscribe from the event.
https://electronjs.org/docs/api/web-request
例如。在函数之后添加此代码(注意在监听器处为null):
window.addEventListener('beforeunload', function(event) {
session.defaultSession.webRequest.onBeforeSendHeaders( ['*://*./*'], null)
})