首页 > 解决方案 > 为什么 Android WebView 在未卸载时会发送“beforeunload”事件?

问题描述

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

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

所以应用程序保持运行,但处于它认为它正在退出的状态,这会导致各种问题。

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

另一个是切换到使用 'unload' 事件而不是 'beforeunload' 我尚未正确测试但可能是更合适的选择。

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

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

标签: cordovawebview

解决方案


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


推荐阅读