我们是跟踪软件,我们需要使用Internet Explorer。
function track(url){
window.setInterval(function (){
$.getScript("http://" + Math.floor(Math.random() * 1000) + "." + url);
},1000)
}
track("example.com/track.php");
但是,大约15秒后,Internet Explorer会停止它并说“不响应”#34;错误。 (在任务经理中)。我们应该采取哪种方式来防止此类错误?
答案 0 :(得分:2)
这种情况最有可能发生,因为你在脚本加载之间给你的函数间隔1秒,但加载脚本需要1秒多的时间才能加载脚本,所以它在完成第一个脚本之前再次开始加载它,并且导致资源使用率过高,因为它会使负载在完成之前在另一个上面累积。
我不确定您的跟踪工作方式,但您可以使用setTimeout
代替setInterval
来避免这种情况,并在完成后再次调用,或设置更高的时间间隔(可能是10秒)
差异:
setTimeout()
- 在指定时间后执行ONCE
setInterval()
- 在指定的间隔时间内永远执行。
<强>实施例强>
- 更高的间隔:
window.setInterval(function () {
$.getScript("http://" + Math.floor(Math.random() * 1000) + "." + url);
}, 10000)
- 使用超时而不是间隔:
window.setTimeout(function () {
$.getScript("http://" + Math.floor(Math.random() * 1000) + "." + url);
}, 1000)