2014-11-25 2 views
0

По какой-то причине код в моей функции события разгрузки ниже запускается сразу же при загрузке, а не в ожидании выгрузки. Зачем?Почему это событие jquery unload выполняется сразу после загрузки?

Вот jsfiddle, так что вы можете увидеть его в действии: http://jsfiddle.net/dillydadally/hsj8xqtx/

HTML:

<input type="button" value="Click me" id="btn"/> 

JavaScript:

$('#btn').click(function() { 
    var popup = window.open('http://www.stackoverflow.com', 'Window Unload Test', 'width=500,height=500'); 

    $(popup).unload(function() { 
     console.log("here"); 
    }); 
}); 

ответ

1

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

Если вы меняете обработчик выгрузки на console.log(popup.document.location.href), вы увидите его еще около: пустое.

Чтобы уменьшить это, вы можете дождаться загрузки содержимого, прежде чем присоединять обработчик выгрузки.

+0

У вас есть рекомендация кода о том, как дождаться загрузки контента? Если я помещаю обработчик события загрузки в одно и то же место, он ничего не делает. Если я выполняю setTimeout, я не могу гарантировать, что окно будет завершено. – dallin

Смежные вопросы