3

deferWeb ページのパフォーマンスを向上させるために jquery スクリプトに属性を追加しましたが、エラーが発生しまし$ is not definedた。ページの読み込み時に JS コードを実行する必要があるため、jQuery.ready イベントを使用しますが、defer を使用すると機能しません。

<head>    
    <script defer="defer" src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>


    <script type="text/javascript">
        $(document).ready(function () {
          //MyLoadCode
        });
    </script>

</head>    
4

4 に答える 4

3

defer属性が存在する場合、ページの解析が終了したときにスクリプトが実行されることを指定します。ただし、ページの解析が完了する前にjquery変数を使用して$おり、その時点でjqueryスクリプトはロードされておらず、初期化されていません$

defer属性を使用する代わりに、スクリプトタグをヘッダーからページの下部、タグの直前に移動します</body>

<html>
    <head></head>
    <body>

        ... 

        <script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>


        <script type="text/javascript">
            $(document).ready(function () {
              //MyLoadCode
            });
        </script>
    </body>
</html> 
于 2012-10-24T08:16:11.017 に答える
0

スクリプトを遅くまでロードしたくない場合は、jqueryスクリプトをhtmlページの下部に移動します。その後、最後にロードされます。

于 2012-10-24T08:14:30.127 に答える
0

を使用する前にjQueryがロードされていることを確認する必要があるため、jQueryのロードを$延期しないでください。

ロードjQueryを延期する場合は、jQueryを使用するjavascriptをスクリプトonload成功イベントハンドラーに追加する必要があります。

于 2012-10-24T08:16:11.340 に答える
0

$(document).ready(function () {そのステートメントはjQueryシンボルであり、延期されてまだ使用できないため、DOMがロードしたユニットを使用 して待機することはできません。したがって、この$変数は、jQueryがすぐに読み込まれる場合にのみ使用できます。

于 2012-10-24T08:17:20.387 に答える