Android Chrome window.onunload

2023-11-27

我正在开发一个 HTML5 应用程序专门针对 Android 和 Chrome。我遇到的问题源于跟踪打开的浏览器选项卡的要求。我通过创建存储在每个选项卡的 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));
});

使用本机 Android 浏览器在姜饼、ICS 和果冻豆上进行了测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Chrome window.onunload 的相关文章

随机推荐

  • Spark 将列组合为嵌套数组

    如何将 Spark 中的列组合为嵌套数组 val inputSmall Seq A 0 3 B 0 25 A 0 3 g 0 4 d 0 0 f 0 1 d 0 0 d 0 7 A 0 3 d 0 7 d 0 0 g 0 4 c 0 2 B
  • 提示下载位置而不是直接下载

    我正在 JavaScript 中创建一个 CSV 元素 然后模拟单击以下载相应的文件 但我不想直接下载 而是希望它打开下载提示来选择要下载的文件的位置 var csvString Papa unparse result quotes fal
  • javac 生成的名称中的 $$ 是什么意思?

    当浏览 DependencyFinder 和 java callgraph 等库生成的 java 调用图时 我发现 java 编译器生成匿名函数 内部类等的名称 我已经找到了其中几个的含义 如果我错了 请纠正 org example Bar
  • 如果没有 return 语句,javascript 函数会返回什么?

    我只是想知道 没有 return 语句 或没有命中任何 return 语句 的函数是否返回一个完全等于 false 的值 例如 function foo foo 如果在 firebug 中执行 这应该返回 false 但如果我只是调用 fo
  • 如何获取mysql表的外键

    我正在创建一个类 它从数据库中获取一个表 并将其显示到网页上 并具有尽可能多的功能 我想要支持的一件事是让类检测表中的哪些列具有外键约束 以便它可以转到这些表 获取它们的所有值并在选择中使用它们 box 当您编辑这些字段时调用 以避免有人违
  • Angular 6:如何构建一个简单的多个复选框以供用户选中/取消选中?

    我在阅读了有关该主题的几个帖子后写了这篇文章 但没有一个帖子能给我我所需要的东西 这个帖子似乎有解决方案 但我不必从 json 中读取检查的值 我所需要的只是 从对象数组中读取国家 地区 动态构建代表每个国家 地区的复选框列表 用户应该选中
  • 使用日期时间时 MySQL GROUP BY 日期

    在 MySQL 中 假设我有一个表 其中有一个名为 actionTime 的列 声明为 日期时间 YYYY MM DD HH MM SS 有没有一种简单的方法来使用 GROUP BY actionTime 但只使用 日期时间 的 日期 部分
  • 尝试在 Laravel 5 中使用电子邮件

    好吧 首先我要说的是 我对 Laravel 5 还很陌生 我一直在 google 上搜索 试图通过输入适当的 URL 来发送一封简单的电子邮件 但没有成功 不幸的是 我发现的文档并没有那么有帮助 只是提供了一个广泛的外观 我知道 larav
  • 如何从java程序执行“javac和java命令”?

    有没有办法从java程序执行 javac和java命令 如果是这样 请帮帮我 Like Runtime getRuntime exec javac
  • 如何使用 azure 服务总线 5.0.0 在 C# azure 函数中手动处理消息完成

    我正在编写一个 Azure 函数来获取 Azure 服务总线中的消息 我想手动处理任何异常 autoCompleteMessages false 无法弄清楚如何将完整或放弃发送回服务队列 尝试过选项1 FunctionName SBQ F1
  • EntityDeploySplit 错误 - Microsoft.Data.Entity.Build.Tasks.dll 丢失

    彻底重新格式化 Windows 并安装 Visual Studio 2013 后 尝试使用数据库优先的实体框架 edmx 文件构建项目会产生以下错误 无法从程序集中加载 EntityDeploySplit 任务 C 程序文件 x86 MSB
  • Haskell 有限场线性代数库

    我正在寻找 Haskell 的有限场线性代数库 就像是FFLAS FFPACK对于 Haskell 来说会很棒 当然 我检查过hmatrix 似乎有一些支持任意矩阵元素类型但我找不到任何与 hmatrix 一起使用的有限域库 当然 我会很感
  • 保存 foreach dopar 循环的多个输出

    我想知道是否 如何可以返回多个输出作为foreach dopar loop 让我们举一个非常简单的例子 假设我想做 2 项操作作为foreach循环 并希望返回或保存每个值的两个操作的结果i 如果只返回一个输出 则很简单 library f
  • 是否有可能在不循环的情况下对ArrayList求和

    是否有可能求和ArrayList不循环 PHP提供sum array 这将给出数组的总和 PHP 代码就像 a array 2 4 6 8 echo sum a array sum a n 我想在 Java 中做同样的事情 List tt
  • 将字典转换为 Numpy 数组

    我正在尝试转换字典 0 0 173 1 342 2 666 3 506 4 94 1 0 13 1 2171 2 1915 3 3075 4 630 2 0 0 1 265 2 5036 3 508 4 11 3 0 0 1 3229 2
  • BTLE(低功耗蓝牙)开发套件 - 必须具有邻近配置文件

    谁能给我指出一个经过测试的低功耗蓝牙开发套件 板 我对接近度配置文件以及与智能手机 尤其是 iPhone 和 Android 设备 以及任何其他具有 BTLE 的设备 的兼容性特别感兴趣 另外 您能告诉我哪些智能手机支持邻近配置文件吗 如果
  • Magento 中保存“特价”的表格在哪里?

    我尝试使用 mySQL 和 php 脚本批量更新 Special price 和 price 我知道包含 price 的表和行 但不知道包含 special price 的表和行 我查看了数据库本身 但仍然没有运气 有任何想法吗 我需要表名
  • android.permission.WRITE_SETTINGS 是否仅授予系统应用程序?

    我们目前正在开发一个应用程序 我们希望在其中更改一些系统设置 当然需要用户许可 android 文档说要执行此操作 您必须添加以下权限
  • 如何使用 C# 对齐 ListView 中单个子项的文本?

    我无法在任何地方找到这个看似简单的主题的答案 是否可以在 WinForms ListView 控件中对齐单个子项的文本 如果是这样 怎么办 我希望同一列中的文本以不同方式对齐 例子 listView1 Columns 1 TextAlign
  • Android Chrome window.onunload

    我正在开发一个 HTML5 应用程序专门针对 Android 和 Chrome 我遇到的问题源于跟踪打开的浏览器选项卡的要求 我通过创建存储在每个选项卡的 sessionStorage 中的唯一 ID 来实现此目的 然后 我通过在每个选项卡