[英]javascript that executes when leaving page - updating legacy code
只是一點背景知識 - 我正在更新一個舊功能,即所有 javascript,因為我們的 web 應用程序中添加了新功能,舊功能必須與之交互。
在測試此更新時,我們注意到在 web 應用程序中從一個頁面移動到另一個頁面時出現問題 - 如果已激活舊功能,它應該會跟隨您。 基本上,激活功能的數據沒有被保留。 那里有一些代碼應該這樣做。 經過一番調查,發現它在 IE/Edge 和 Firefox 中按預期工作,但退出代碼未在 Google Chrome 和 Safari 中執行。 這或許可以解釋為什么企業沒有意識到這個問題,但已經確認該問題也存在於實時站點中,因此最近沒有引入,因為我相信大多數用戶都會使用 IE。
管理退出功能的代碼如下:
if(window.onpagehide || window.onpagehide === null){
window.addEventListener("pagehide", storeDataFunction, false);
} else {
window.addEventListener("unload", storeDataFunction, false);
}
使用上面的代碼,當您嘗試離開頁面時,storeDataFunction 中的邏輯甚至不會執行。
在瀏覽了此處和其他論壇后,我已將上述內容更新為:
window.onbeforeunload = storeDataFunction;
並使 storeDataFunction 返回 null。
這似乎稍微好一點,因為在移動頁面時正在執行 storeDataFunction,但在其中深處有一個 ajax POST 到 controller 在我們的 Z2567A5EC9705EB7AC2C984033E0618 中的 controller這個 ajax 請求沒有得到執行。 同樣,這僅適用於 Chrome 和 Safari,並且在 IE 和 Firefox 上運行良好。
所以我正在尋找的是一個引導。 為了我們想要在這里實現的目標,我是否使用onbeforeunload走錯了路? 還是原來使用 pagehide/unload 更合適? 這兩個都不正確嗎?有更好的方法嗎? 這個功能是在大約 7 年前開發的,所以我什至不確定它是否曾經在 Chrome 上工作過,或者它是否在開發時工作過,並且 Chrome 中的一些最新更新改變了它們處理頁面終止的方式。
提前致謝。
看起來谷歌已經更新了 Chrome 以在頁面關閉期間停止 XHR。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.