2012-02-22 115 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

相關問題