1

正如标题中所说,我有一个 window.load 行:

$(window).load(function() { 
   //Some Code
});

因此,一旦加载了所有内容,我就会执行//Some Code,但是我想这样做,因此如果未加载内容,可以说在 7 秒内(可能是大图像文件,或发生丢失文件等),//Some Code即使内容未完全加载,也要执行。我怎样才能完成这项任务?

4

2 回答 2

4

你可以这样做 :

function someCode() {
    if (someCode.done) return;
    someCode.done = true;
    clearTimeout(t);
    // Some Code
}
var t = setTimeout(someCode, 7000);
$(window).load(someCode);
于 2013-04-12T14:25:01.093 回答
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);
于 2013-04-12T14:50:29.970 回答