2016-12-09 5 views
1

私のプロジェクトでは小さな問題があります。私たちのプロジェクトには多数のjspが含まれており、javascriptと$(document).readyがあり、すべてのjspが実行されています。だから私たちは$(document).readyの配列全体にどの関数が最初から実行されるのか分かりません(私の知っているのは、私のところから不注意です)。 $(document).ready関数のワイドリストにある他の関数の前に実行されるJqueryまたはjavascriptで関数を呼び出す方法はありますか?この問題は、ページが完全に読み込まれていないことをユーザーに知らせる準備ができたらすぐにローダを追加するように求められたために発生しました。解決策があれば教えてください。ページがロードされるとすぐに関数を呼び出す必要があります

おかげに関して、 アニル・サイモン

+0

あなたの問題を解決しますjQuery.holdReady機能を検索します。申し訳ありませんが、電話で入力するか、例を示します。 – Mitch

答えて

2

jQuery.holdReady()

はjQueryのreadyイベントの実行を保持または解放してください。

$.holdReady(true); 
$.getScript("myplugin.js", function() { 
    $.holdReady(false); 
}); 
+0

これはかなりクールだ、ここで何が起きているのか説明してもらえますか? –

+0

こちらをお読みくださいこのhttps://api.jquery.com/jquery.holdready/ @AnilSimon – Shan

+0

これは良い解決策ですが、自分の機能を実装することができません。つまり、本体にローダーを追加することができます。 –

1

HTMLページ内の任意のスクリプトがすぐに実行されます。何らかの理由がない場合は、本文の末尾にスクリプトを配置する必要があります。 jQuery準備完了ハンドラとネイティブDOMContentReadyイベントは、完全なHTMLツリーがロードされた後に起動されるため、HTML内のコードは前に実行されます。これまでのDOMはすでにアクセス可能です。

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Title</title> 
 
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script> 
 
    <script> 
 
    $(function(){alert('jq doc ready');}); 
 
    </script> 
 
</head> 
 
<body> 
 
    Page Content 
 

 
    <script> 
 
    // script is executed immediately 
 
    // no need to put it into a function - anyway... e.g. for encapsulation 
 
    (function() 
 
    { 
 
     alert('not yet loaded'); //executed before DOM ready 
 
    })(); 
 
    </script> 
 
</body> 
 
</html>

1

Deffered機能は

$.when($.getScript(url), $.ready).done(function(){ // update your code here });

関連する問題