检测用户启动的页面卸载与浏览器崩溃

时间:2016-08-23 20:24:58

标签: javascript mobile

我有一些内存密集的WebGL代码,可以在桌面和移动设备上运行。用户可以添加/删除WebGL模块,从而改变页面的内存要求。在低功耗设备上,用户可能会陷入糟糕的状态。他们尝试加载页面,但由于加载了太多模块,页面内存不足。页面崩溃了。我正在努力为用户提供从这种情况中恢复的方法。

我的恢复解决方案的一些高级伪代码如下所示:

  • 在init期间,为每个模块的sessionStorage写一个标志。该标志表示给定的模块尚未加载。
  • 如果模块已经存储了标记 - 请勿尝试加载它。
  • 对于其他每个模块 - 尝试加载。
  • 在加载每个模块时,清除其标志。

总的来说,此代码可以防止浏览器每次都尝试加载所有模块。

但是,如果用户刷新页面,我还会清除模块的加载标志。手动页面刷新不是浏览器崩溃 - 因此所有模块都应继续尝试加载:

window.addEventListener('unload', function() { /* clear flags here */ });

这一切似乎在桌面环境中运行良好,但在测试移动设备时,我发现浏览器通常会自动刷新页面而不是崩溃。在Safari中,我看到一条错误消息:

  

"此网页出现问题,因此重新加载。"

是否可以检测手动页面刷新与浏览器错误恢复'刷新吗

据我所知,答案是,'否。'因为我在两种情况下都只有一个窗口卸载事件。

0 个答案:

没有答案