2014-11-25 49 views
0

出于某种原因,下面的卸载事件函数中的代码在加载时立即运行,而不是等待卸载。为什么?为什么这个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"); 
    }); 
}); 

回答

1

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

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

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

+0

您有关于如何等待内容加载的代码建议吗?如果我把一个加载事件处理程序放在同一个地方,它什么都不做。如果我执行setTimeout,我不能保证窗口完成加载。 – dallin 2014-11-25 01:10:05

相关问题