node.js - 已关闭或释放的渲染器窗口中的 Electron session webrequest 函数

标签 node.js electron

在主窗口中,我使用此代码在单击时打开一个窗口

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/

相关文章:

javascript - Electron :加载外部脚本并将其传递给函数

javascript - 下面的node js代码是否可能存在内存泄漏?

javascript - 发出多个 Axios 请求导致 CORS 错误

node.js - 递归模式下的nodejs http请求

node.js - 在 "ERROR: Validation error"脚本中执行两个 Sequelize 命令时出现 "pretest"消息

python - 如何在Python中读取Python的循环输出

javascript - Nodejs 异步/等待 mysql 查询

macos - 避免 "Application Downloaded From The Internet"警告

javascript - Electron:惰性元素类型必须解析为类或函数(在生产模式下)

node.js - 使用 webpack 为 Electron 应用程序捆绑错误 `Cannot resolve module ' electron'`