Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测用户启动的页面卸载与浏览器崩溃_Javascript_Mobile - Fatal编程技术网

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

Javascript 检测用户启动的页面卸载与浏览器崩溃,javascript,mobile,Javascript,Mobile,我有一些在桌面和移动设备上运行的内存密集型WebGL代码。用户可以添加/删除WebGL模块,从而更改页面的内存需求。在低功耗设备上,用户可能会使自己处于不良状态。他们试图加载页面,但由于加载的模块太多,页面内存不足。页面崩溃。我正在努力为用户提供一种从该场景中恢复的方法 我的恢复解决方案的一些高级伪代码如下所示: 在初始化期间,为每个模块的会话存储写入一个标志。该标志表示给定模块尚未加载 如果一个模块在存储器中已经有一个标志,不要尝试加载它 对于其他模块-尝试加载 在每个模块加载时,清除其标志

我有一些在桌面和移动设备上运行的内存密集型WebGL代码。用户可以添加/删除WebGL模块,从而更改页面的内存需求。在低功耗设备上,用户可能会使自己处于不良状态。他们试图加载页面,但由于加载的模块太多,页面内存不足。页面崩溃。我正在努力为用户提供一种从该场景中恢复的方法

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

  • 在初始化期间,为每个模块的会话存储写入一个标志。该标志表示给定模块尚未加载
  • 如果一个模块在存储器中已经有一个标志,不要尝试加载它
  • 对于其他模块-尝试加载
  • 在每个模块加载时,清除其标志
总的来说,此代码具有防止浏览器每次尝试加载所有模块的效果

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

window.addEventListener('unload', function() { /* clear flags here */ });
这一切在桌面环境中似乎都很好,但在测试移动设备时,我发现浏览器经常会自动刷新页面,而不是崩溃。在Safari中,我看到一条错误消息:

“此网页出现问题,因此已重新加载。”


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

据我所知,答案是‘否’,因为在这两种情况下,我只有一个窗口卸载事件可以处理