javascript - Android Chrome window.onunload

标签 javascript android jquery google-chrome local-storage

我正在开发专门针对 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/

相关文章:

javascript - 您对 Android 网络应用有什么体验(限制、提示、最佳实践)?

asp.net-mvc - 使用 jQuery 验证插件将多个值发送到 ASP.NET MVC Controller 操作?

javascript - Javascript、倒计时、链接删除

javascript - 如何修复 jQuery Mobile 的固定页脚?

android - 平滑滚动在 ViewPager 中不起作用(支持库)

java - ListView/SimpleAdapter 不刷新 - Android

javascript - 通过单击 div 来选中复选框 - 不适用于其他功能

javascript - 创建信用卡输入。为什么表格不向 4 位数信用卡添加破折号?

javascript - Firefox 3 在页面加载期间进行 ajax 调用时不使用缓存

javascript - 我怎样才能让底部的 console.log 等到它全部完成,然后告诉我答案而不是等待?