簡體   English   中英

離開頁面時執行的 javascript - 更新遺留代碼

[英]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。

https://www.chromestatus.com/feature/4664843055398912

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM