Я действительно не знаю, как вам удалось заставить ваш код работать. Это просто не будет. Проблема в том, что вы не можете добавить событие, как вы пытаетесь. Вам нужно использовать 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 открытого окна.
Надеюсь, это поможет.