cordova - 为什么 Android WebView 在未卸载时发送 'beforeunload' 事件?

标签 cordova webview

我的应用程序是基于 Cordova 的,它监听“beforeunload”以执行一些清理并将应用程序置于退出状态,从而它不会尝试某些可能无法完成的事情(例如数据库更新) .

问题是最近(过去一个月有 4 位客户报告了与此相关的问题,对于 12 个月未更改的应用程序,多年来一直运行良好)我的应用程序正在发送 'beforeunload' 事件在后台运行 5 分钟后,实际上并没有卸载。

因此该应用程序仍在运行,但处于它认为正在退出的状态,这会导致各种问题。

我有几个修复程序准备发布。一种是忽略卸载事件,由于这些天应用程序通常在后台运行,因此不进入退出状态可能没什么大不了的。

另一种是切换到使用“卸载”事件而不是“beforeunload”,我还没有正确测试但可能是更合适的选择。

我的问题是,'beforeunload' 的这种奇怪行为是预期/已知的还是 webview 中的错误?

我对 beforeunload 的使用可以追溯到 4 或 5 年前,因此它很可能已经过时并且需要审查。

最佳答案

也许使用 cordova pause 和 resume 事件来防止当应用程序在后台时执行 beforeunload 逻辑。

关于cordova - 为什么 Android WebView 在未卸载时发送 'beforeunload' 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186727/

相关文章:

javascript - PhoneGap-Plugin-Push 或 jQuery/Ajax

ios - PhoneGap Media API 无法覆盖 iPhone 设备上录制的音频

android - 调整图像大小以适合 WebView 尺寸

android - 如何在 Webview 中嵌入视频 View ?

ios - 为什么我的 Phonegap 应用程序覆盖了我移动设备的状态栏?

android - ionic : Adding platform gives error

android - 在 Android 中将 Cordova 与 Crosswalk 结合使用时使用自定义插件

javascript - 如何从 Android Web 浏览器调用 JavaScript 接口(interface)方法?

android - 从 Assets 文件夹加载字体

javascript - Flutter - 如何在 WebView 中获取 Javascript 回调?