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