我在堆栈溢出和Google中搜索标题中的特定错误消息,但没有找到它(在JavaScript编码的上下文中,而不是在浏览器设置中)。在我的网站上,有五个函数每10秒被调用一次。这些职能的作用如下:
但是,如果用户登录,但不活动(不使用鼠标或按任何键)约15分钟,当我使用Chrome“检查元素”时,我会收到以下错误消息:
Failed to load resource: net::ERR_NETWORK_IO_SUSPENDED // (x 5)
Uncaught Type Error: Cannot read property 'combinedfiletimeinput' of undefined //one of my previously defined form values is now not defined
此时,用户的新电子邮件计数、新IM计数等变为空白(而它们以前是整数)。用户所要做的就是刷新页面或转到另一个页面重新连接,所以这不是什么大事。
我的黑客解决方案是,如果在15分钟内没有发生以下事件,则使用JavaScript计时器自动注销用户:
是否有办法防止这种“未能加载资源”错误的发生?
更新:这似乎发生在用户的设备在仍然记录on...when时休眠/休眠时,用户重新启动设备时。这是在Chrome的检查元素、Firebug等上可以看到错误消息的时候。
更新10/02/2014:我现在将五个setTimeout函数浓缩成一个大型setTimeout函数。此外,在一个名为“组合文件时间输入”的输入中保存修改时间的表单已经被删除,我现在以不同的方式处理文件修改时间。
下面是日志的屏幕截图,显示了错误。我已经添加了"mysite“代替我的网站的名称和”文件名“代替实际的文件名。我还删掉了外部JavaScript文件的名称,剩下的只有.js (对不起,但我只是想小心:),我剪掉了一些屏幕快照,这样文本就足够大了,可以阅读。
从屏幕截图中可以看到,对于前三个请求,请求处理正常。然后我“睡觉”我的设备,然后打开我的设备。接下来的两个请求就是错误(红色)。在这前两个错误之后,请求开始正常地再次处理(带有黑色文本的行,后面带有红色文本的行)。控制台清楚地显示了错误消息。
发布于 2014-10-07 09:09:51
我只是总结我对这个问题的意见,供社会人士参考。
经过一些测试后,似乎必须为每个调用设置Ajax超时。在没有超时的情况下,NET:错误(如ERR_NETWORK_IO_SUSPENDED、ERR_INTERNET_DISCONNECTED等)将导致Ajax停止执行,并且在计算机醒来后不会恢复。
对于jQuery:
$.ajax({
url: yourURL,
timeout: 4000
});
对于XMLHttpRequest (XHR):
xhr.timeout = 4000;
此外,脚本捕获连接错误需要一个异常处理程序,这样您的JavaScript代码就不会因为意外的行为/值而崩溃。
即使使用超时和exeption处理程序,您的应用程序也会抛出NET::错误,但它们将而不是损害您的应用程序;您可以将它们视为通知。
发布于 2014-10-02 13:30:07
虽然我认为捕捉异常应该是一般的治疗方法,但您可以尝试触发假事件(鼠标、滚动、键盘),看看这是否会阻止Chrome进入“空闲”状态。
堆栈溢出问题https://stackoverflow.com/questions/6157929可能有帮助。
https://stackoverflow.com/questions/23725085
复制相似问题