簡體   English   中英

Android Chrome window.onunload

[英]Android Chrome window.onunload

我正在開發一個專門為 Android 和 Chrome開發的 HTML5 應用程序。 我的問題源於需要跟蹤打開的瀏覽器選項卡。 為此,我創建了一個存儲在每個選項卡的 sessionStorage 中的唯一 ID。 然后我通過在每個選項卡可以訪問的 localStorage 數組中注冊每個 ID 來跟蹤打開的選項卡。

問題是在使用 window.onunload 事件關閉選項卡時,我無法從 localStorage 中刪除 ID。 該代碼在桌面 Chrome 中運行良好,但我無法在 Android 中運行。

$(window).on('beforeunload', function () {
    removeWindowGUID(); 
});

function removeWindowGUID() {
    var guid = sessionStorage.getItem("WindowGUID");
    var tmp = JSON.parse(localStorage.getItem("WindowGUIDs"));
    tmp = tmp.remove(guid);  // remove is a custom prototype fn
    localStorage.setItem("WindowGUIDs", JSON.stringify(tmp));
}

此事件將在重新加載頁面時觸發,這很好,只是在關閉時不會觸發。 我也嘗試過使用 pagehide 事件。

取決於瀏覽器。 有些使用.onunload ,有些使用onbeforeunload

最快的解決辦法是

window.onunload = window.onbeforeunload = function() {
    var guid = sessionStorage.getItem("WindowGUID");
    var tmp = JSON.parse(localStorage.getItem("WindowGUIDs"));
    tmp = tmp.remove(guid);  // remove is a custom prototype fn
    localStorage.setItem("WindowGUIDs", JSON.stringify(tmp));
});

使用原生安卓瀏覽器在姜餅、ICS 和果凍豆上進行測試。

我做了類似的事情,錯誤完全相同。 我注意到如果以編程方式調用 window.close() ,則會調用該事件。 我剛剛在頁面上添加了我自己的“關閉”按鈕。

暫無
暫無

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

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