Почему это событие выгрузки jquery выполняется сразу после загрузки?

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

Вот 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.stackru.com', 'Window Unload Test', 'width=500,height=500');

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

1 ответ

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

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

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

Другие вопросы по тегам