我正在开发专门针对 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));
});
使用 native android 浏览器在 Gingerbread 、ICS 和果冻 bean 上测试。
关于javascript - Android Chrome window.onunload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535076/