我遇到了一个问题,我的应用程序位于 iframe 中,并且是从外部域调用的。当 iframe 正确加载时,IE9 不会触发加载事件,所以我认为我陷入了使用 setTimeout 来轮询页面的困境。
不管怎样,我想看看我的 setTimeout 完成通常需要多长时间,所以我希望能够记录 setTimeout 从我的回调中触发的延迟,但我不确定如何将该上下文传递给它,以便我可以记录它。
App.readyIE9 = function() {
var timings = [1,250,500,750,1000,1500,2000,3000];
for(var i = 0; i < timings.length; i++) {
var func = function() {
if(App.ready_loaded) return;
console.log(timings[i]);
App.readyCallBack();
};
setTimeout(func,timings[i]);
}
};
我在 IE9 的控制台中不断收到 LOG: undefined 。
实现这一目标的正确方法是什么?
Thanks
发生这种情况是因为你没有接近的价值i
在你的func
。当循环完成后,i
is 8 (timings.length
),数组中不存在。
你需要做这样的事情:
App.readyIE9 = function() {
var timings = [1,250,500,750,1000,1500,2000,3000];
for(var i = 0; i < timings.length; i++) {
var func = function(x) {
return function(){
if(App.ready_loaded) return;
console.log(timings[x]);
App.readyCallBack();
};
};
setTimeout(func(i),timings[i]);
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)