我想在 Windows 加载后运行一个函数,但同时它不应该超过 6 秒。换句话说,它应该在窗口加载后或 6 秒后运行,以先到者为准。我怎样才能做到这一点?
问问题
513 次
5 回答
2
我认为这将满足您的需求。
function doSomething() {
// do something
}
var timeout = setTimeout(doSomething, 6000);
$(window).load(function() {
clearTimeout(timeout);
doSomething();
});
于 2013-08-03T02:24:09.803 回答
1
<body onload="myFunction()">
和
setTimeout()
见http://www.w3schools.com/jsref/met_win_settimeout.asp
编辑:我没有看到你在 jQuery 中要求这个。这是一个示例的链接:http: //jquerybyexample.blogspot.com/2012/02/how-to-use-jquery-settimeout-function.html
于 2013-08-03T02:23:20.357 回答
1
y = 0;
function x() {
alert('hi');
y++;
}
func_x = setTimeout(x, 6000);
$(window).load(function () {
if (y === 0) {
clearTimeout(func_x);
x();
}
});
于 2013-08-03T02:27:41.610 回答
0
您可以创建一个函数装饰器,它允许一个只运行一次的函数。
function DoOnce(what){
var done = false, args = arguments.slice(1);
return function(){
if (!done) {
done = true;
what.apply(args);
}
};
}
然后您可以使用它,如下所示:
var handler = DoOnce(function(a){ alert(a);}, 1);
window.onload = handler;
setTimeout(handler, 6000);
于 2013-08-03T02:25:24.730 回答
0
像这样:
function yourfunction(){
//your code
}
var a = setTimeout( yourfunction, 6000);
window.onload = function(){
if(a){
clearTimeout(a);
}else{
yourfunction();
}
}
于 2013-08-03T02:27:39.190 回答