我有一些内存密集的WebGL代码,可以在桌面和移动设备上运行。用户可以添加/删除WebGL模块,从而改变页面的内存要求。在低功耗设备上,用户可能会陷入糟糕的状态。他们尝试加载页面,但由于加载了太多模块,页面内存不足。页面崩溃了。我正在努力为用户提供从这种情况中恢复的方法。
我的恢复解决方案的一些高级伪代码如下所示:
总的来说,此代码可以防止浏览器每次都尝试加载所有模块。
但是,如果用户刷新页面,我还会清除模块的加载标志。手动页面刷新不是浏览器崩溃 - 因此所有模块都应继续尝试加载:
window.addEventListener('unload', function() { /* clear flags here */ });
这一切似乎在桌面环境中运行良好,但在测试移动设备时,我发现浏览器通常会自动刷新页面而不是崩溃。在Safari中,我看到一条错误消息:
"此网页出现问题,因此重新加载。"
是否可以检测手动页面刷新与浏览器错误恢复'刷新吗
据我所知,答案是,'否。'因为我在两种情况下都只有一个窗口卸载事件。