正如标题中所说,我有一个window.load行:
$(window).load(function() {
//Some Code
});
所以一旦加载了所有内容,我执行//Some Code
,但是如果没有加载内容,我想这样做,假设在7秒内(可能是大图像文件,或者丢失文件等)比执行//Some Code
即使内容未完全加载。
我怎样才能完成这项任务?
答案 0 :(得分:4)
你可以这样做:
function someCode() {
if (someCode.done) return;
someCode.done = true;
clearTimeout(t);
// Some Code
}
var t = setTimeout(someCode, 7000);
$(window).load(someCode);
答案 1 :(得分:2)
由于延迟对象只能解析一次,因此可以用作解决方案:
var runCodeDeferred = $.Deferred(function(deferred){
$(window).load(deferred.resolve);
setTimeout(deferred.resolve,7000)
});
runCodeDeferred.done(function(){
//Some Code
});
使用$.Callbacks
对象也可以这样做:
var callbacks = $.Callbacks("once");
$(window).load(callbacks.fire);
setTimeout(callbacks.fire,7000);
callbacks.add(function(){
//Some Code
});
但这与做的没什么不同:
var timer;
function someCode() {
//Some Code
}
$(window).on("load.someCode",function(){
clearTimeout(timer);
someCode();
});
setTimeout(function(){
$(window).off("load.someCode");
someCode();
},7000);