2014-03-31 28 views
0

長話短說 - 我試圖在用戶關閉窗口時提交某種形式,或者沒有響應20分鐘。實現窗口關閉事件的最佳方式

第二,我使用此代碼完成的:

timeOut = setTimeout(function() { 
    submitThisForm(document.forms.sendDealerInfo); 
    console.log("Timed out..."); 
}, 600000); 

對於第一個我與此代碼嘗試:

window.onbeforeunload = function() { 
    submitThisForm(document.forms.sendDealerInfo); 
    clearTimeout(timeOut); 
    return null; 
} 

不幸的是window.onbeforeunload事件將不會在所有瀏覽器觸發(例如在Chrome和Opera中)。 我也試過:$(window).unload(function() {...window.addEventListener("beforeunload", function (event) {... 但同樣的故事 - 它們不適用於所有瀏覽器。

有沒有辦法完成我想要做的其他方式?也許會議?

回答

0

window.onbeforeunload是在所有主流瀏覽器的作品,就像是從支持Chrome的1歌劇院12

Browser Compability

+0

你給了我一個'onunload'的鏈接,而不是'onbeforeunload'。 –

+0

我做過了,但兩者都不適用於我的Chrome – OutFall

+0

您是否嘗試刪除撥號盒以確認您的'onbeforeunload'已刪除其他代碼。 –

1

由於蘇曼說,在onBeforeUnload所有的主流瀏覽器的支持。但是大多數(如果不是全部的話)瀏覽器不會讓你在該事件中做任何事情,除了返回一個字符串給「你確定要離開這個頁面?」嗎?對話。

然後用onUnload您試圖在頁面已經被卸載並且導航已經發生之後提交表單。這將是一個非常奇怪的用戶體驗,是導航,然後重定向到別的地方。

試圖在窗口關閉時提交表單不是一種非常安全的方法。網絡瀏覽器可能會崩潰,用戶可能會強行關閉它,互聯網連接可能會中斷等等。我認爲你最好的選擇是每隔一段時間提交一次。可能檢測到幾秒鐘的空閒超時,然後提交表單?