cordova - 为什么 Android WebView 在未卸载时会发送“beforeunload”事件?
问题描述
我的应用程序是基于 Cordova 的,它侦听“beforeunload”以执行一些清理并将应用程序置于退出状态,因此它不会尝试某些可能无法完成的事情(例如数据库更新)。
问题是最近(过去一个月有 4 位客户报告了与此相关的问题,对于 12 个月内未更改的应用程序,多年来一直运行良好)我的应用程序在进入后被发送“beforeunload”事件背景说5分钟,但实际上并没有卸载。
所以应用程序保持运行,但处于它认为它正在退出的状态,这会导致各种问题。
我有几个修复程序准备发货。一是忽略卸载事件,因为这些天应用程序通常在后台运行,不进入退出状态可能没什么大不了的。
另一个是切换到使用 'unload' 事件而不是 'beforeunload' 我尚未正确测试但可能是更合适的选择。
我的问题是真的,这种“beforeunload”的奇怪行为是预期/已知的,还是 webview 中的错误?
我对 beforeunload 的使用可以追溯到 4 或 5 年,因此它可能已经过时并且需要审查。
解决方案
当应用程序在后台时,也许使用cordova pause 和 resume 事件来防止 beforeunload 逻辑执行。
推荐阅读
- jquery - 如何禁用css验证边框
- sql - 数据库建模:表中的键值对
- javascript - 在 Angular 检索到数据后运行 JS 脚本
- php - 在 WordPress 循环中使用自定义元框日期
- mysql - 关于 mysql 的 IN 和 NOT IN 的危险
- powerbi - PowerBI: Change type to multiple columns at the same time
- reactjs - React Router,2 个具有相似 url 的路由
- c# - C# 中的浮点比较是确定性的吗?
- java - 带有 viewModel 和 Live 数据的 RecyclerView 适配器
- angular - Angular 无法解析模板 - 条件 templateUrl