为什么这个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.stackoverflow.com', 'Window Unload Test', 'width=500,height=500');
    $(popup).unload( function() {
        console.log("here");
    });
});

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

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

若要缓解此问题,可能需要等待内容加载,然后再附加卸载处理程序。

最新更新