Иногда возвращается .onbeforeunload, иногда нет (всплывающее окно, IE11) - PullRequest
0 голосов
/ 09 мая 2018

Я работаю над этим кодом на работе. По сути, он возвращает console.log всякий раз, когда всплывающее окно закрывается. Использование .onbeforeunload работает с любым браузером, кроме IE11. С IE11 он иногда будет работать, а иногда вообще не будет звонить. Я не делаю ничего другого, просто открываю всплывающее окно и закрываю его. Я понятия не имею, как это исправить, поскольку это темпераментно. Я вставил код функции ниже. Спасибо

function open(config, refID, cb) {
    var w = window.open(
      config.baseURL,
      "_blank",
      "toolbar,scrollbars,resizable,top=250,left=250,width=599,height=500"
    );

    w.onbeforeunload = function () {
      if (cb) cb()
    };
  }

1 Ответ

0 голосов
/ 09 мая 2018

Я действительно не знаю, как вам удалось заставить ваш код работать. Это просто не будет. Проблема в том, что вы не можете добавить событие, как вы пытаетесь. Вам нужно использовать addEventListener. Я сделал простой фрагмент. Работает 100% раз. Нет темпераментного кода, если такая вещь вообще существовала:)

function open(url, callback) {

  // Open the window
  var win = window.open(url, "popup", "toolbar=1, scrollbars=1, resizable=1, top=250, left=250, width=500, height=500");

  // Add the event listener
  win.addEventListener('beforeunload', function () {
    if(callback) callback();
  }, false);

}

// Opens the window, with the url and callback as arguments
open('whatever.html', function() { 
  console.log('hello!');
});

Помните, что для возможности добавления в него прослушивателя событий необходимы разрешения на URL открытого окна.

Надеюсь, это поможет.

...