Функция электронного запроса сеанса в окне рендерера, которое было закрыто или выпущено - PullRequest
0 голосов
/ 17 января 2019

Из главного окна я использую этот код, чтобы открыть окно при нажатии

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 в первый раз, он работает. Когда я закрываю и открываю снова, я получаю эту ошибку

"Попытка вызова функции в окне рендерера, которое было закрыто или освобождено."

Любая помощь будет оценена

1 Ответ

0 голосов
/ 01 августа 2019

Вам нужно событие при закрытии окна, которое удаляет слушателя.

Из документов: ⚠️ Only the last attached listener will be used. Passing null as listener will unsubscribe from the event. https://electronjs.org/docs/api/web-request

Например. Добавьте это после вашей функции (обратите внимание на ноль вместо слушателя):

window.addEventListener('beforeunload', function(event) {
    session.defaultSession.webRequest.onBeforeSendHeaders( ['*://*./*'], null) 
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...