2

ドキュメントがまだロードされている場合にのみ関数を呼び出したいのですが、どうすればよいですか?

4

3 に答える 3

8

document.readyStateグローバルスコープで単純な変数を確認または使用できます。

var ready = false;
$(document).ready(function () {
    ready = true;
});
于 2010-06-12T14:34:34.740 に答える
0

非常に便利なjQuery遅延オブジェクトを使用して、ドキュメントがまだロードされているかどうかを確認できます。

http://api.jquery.com/category/deferred-object/

http://eng.wealthfront.com/2012/12/jquerydeferred-is-most-important-client.html

例えば

(function($) {    
    var jqReady = $.Deferred();
    // Bind doc ready to my deferred object
    $(document).bind("ready", jqReady.resolve);

    // Check to see is doc is ready
    if(jqReady.state() !== 'resolved'){
        alert('Doc is not ready');
    }

    $.when(jqReady).then(function () {
        // Code here will run when doc is ready/state === 'resolved'
        alert('Doc is ready');
    });
})(jQuery);​

jsFiddleの例

于 2012-12-17T09:39:34.700 に答える
0

関数を JavaScript で通常どおり実行し、次のように上書きできますjQuery.ready

function foo() {
    // …
}
$(document).ready(function() {
    foo = function() {};
});
foo();

これで、foo再帰的に自分自身を呼び出すとfoo、ドキュメントの準備ができたときに が再定義されたときに停止します。

于 2010-06-12T14:34:16.457 に答える