正如标题中所说,我有一个 window.load 行:
$(window).load(function() {
//Some Code
});
因此,一旦加载了所有内容,我就会执行//Some Code
,但是我想这样做,因此如果未加载内容,可以说在 7 秒内(可能是大图像文件,或发生丢失文件等),//Some Code
即使内容未完全加载,也要执行。我怎样才能完成这项任务?
正如标题中所说,我有一个 window.load 行:
$(window).load(function() {
//Some Code
});
因此,一旦加载了所有内容,我就会执行//Some Code
,但是我想这样做,因此如果未加载内容,可以说在 7 秒内(可能是大图像文件,或发生丢失文件等),//Some Code
即使内容未完全加载,也要执行。我怎样才能完成这项任务?
你可以这样做 :
function someCode() {
if (someCode.done) return;
someCode.done = true;
clearTimeout(t);
// Some Code
}
var t = setTimeout(someCode, 7000);
$(window).load(someCode);
由于延迟对象只能解决一次,因此可以用作解决方案:
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);