jQuery检查远程页面是否已加载到while循环中
我们正在一个网页中嵌入“可视化”。嵌入的对象是从同一服务器上的另一个URL加载的(没有CORS问题),但是一旦用户加载了主页,辅助资源需要一段时间(1-5秒) 使用jQuery检查远程页面是否已加载到while循环中,jquery,ajax,Jquery,Ajax,我们正在一个网页中嵌入“可视化”。嵌入的对象是从同一服务器上的另一个URL加载的(没有CORS问题),但是一旦用户加载了主页,辅助资源需要一段时间(1-5秒) 使用async:true和async:false生成相同的结果: Test: 0 z.js:34 Test: 1 z.js:34 Test: 2 z.js:34 Test: 3 z.js:34 Test: 4 z.js:34 Test: 5 z.js:34 Test: 6 z.js:34 Test: 7 z.js:34 Test: 8 z
async:true
和async:false
生成相同的结果:
Test: 0 z.js:34
Test: 1 z.js:34
Test: 2 z.js:34
Test: 3 z.js:34
Test: 4 z.js:34
Test: 5 z.js:34
Test: 6 z.js:34
Test: 7 z.js:34
Test: 8 z.js:34
Test: 9 z.js:34
Test: 10 z.js:34
undefined
(10) Sleeping for a second
我尝试过在
成功
/错误
回调中设置加载页面
变量,这两种方法都不起作用。如何在间隔内创建一个函数,不断检查它是否加载了
var interval = setInterval( function () {
if (document.all["main"].readyState == 4) {
clearInterval(interval);
alert("Initialization is ready.");
}
}, 100);
setTimeout(…)
不会导致程序“睡眠”——它会导致程序在给定的时间间隔后执行某些操作
因此,您的while
循环无停顿地运行11次,每次创建一个新的1s计时器,将“睡眠一秒钟”输出到您的控制台
您可以完全删除循环,只需添加代码以隐藏微调器而不是此行:
loaded_page = true;
这听起来很有希望。我将测试该实现,谢谢。不知道
set/clearInteveral
测试并得到了一个有效的实现,这完美地解决了它!好的,所以我应该将ajax查询放在setTimeout中,而不是单独进行。您不需要使用setTimeout
。加载页面后,ajax
done
函数将运行。问题是在加载页面之前,我们可能会遇到各种错误,包括代理错误、超时和404。您可以在ajax
调用中测试这些错误,但看起来@BA_Webimax为您提供了一个很好的解决方案。
var interval = setInterval( function () {
if (document.all["main"].readyState == 4) {
clearInterval(interval);
alert("Initialization is ready.");
}
}, 100);
loaded_page = true;