0

Windows のロード後に関数を実行したいのですが、同時に 6 秒以上かかるべきではありません。つまり、Windows のロード後または 6 秒後のどちらか早い方で実行する必要があります。どうやってやるの?

4

5 に答える 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 に答える