为什么加载后会立即执行此jquery卸载事件?

时间:2014-11-25 00:15:48

标签: jquery javascript-events onbeforeunload onunload

出于某种原因,下面的卸载事件函数中的代码在加载时立即运行,而不是等待卸载。为什么?

这是一个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 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为当您第一次创建窗口时,它的位置实际上是:空白。然后在请求指定的URL时卸载。

如果您将卸载处理程序更改为console.log(popup.document.location.href),您仍会看到它仍为:空白。

为了缓解这种情况,您可能希望在附加卸载处理程序之前等待内容加载。