2012-02-22 112 views
4

如果服务器(Socket.IO)连接静默超过5秒钟,我有一个导致页面重新加载的“安全”代码的Web应用程序(一般是客户站点防火墙/破解代理问题)。如何检测浏览器是否正在加载新页面

Socket.IO连接会在新页面开始加载时立即停止,但安全代码不会看到此内容。导航到较慢的页面会导致安全代码触发并跳转回上一页。

我需要能够告诉(就在此代码导致重新加载之前)浏览器当前是否正在等待加载新(慢)页面。

除了在每个链接上放置jQuery点击事件(不会通过地址栏捕获导航)之外,还有哪些方法可以做到这一点?

谢谢,

Chris。

回答

12

监测window.onbeforeunload会做的伎俩。在用户开始导航之后立即触发。任何页面上

尝试键入这在Chrome控制台,点击任何链接:

window.onbeforeunload = function() { console.log("oh noes"); } 
2

我的建议:修复您的代码,以便在套接字断开连接时不重新加载页面。问题解决了。

编辑
我想你可以简单地设置一个变量,如isReloading当页面重新加载。您还需要监控onbeforeunload,并检查首先发生的事情:断开连接或卸载事件。如果断开连接先发生,您将断开连接。触发isReloading标志并重新加载。在onbeforeunload检查标志是否被设置。反转检查是否正在加载缓慢页面的概念:检查您是否正在重新加载。

+0

是啊,同意。没有办法检查。 – Asken 2012-02-22 11:25:17

+0

谢谢,但这不是可协商的。 – fadedbee 2012-02-22 11:25:32

相关问题