0

登録用のページがありますが、一部のJSはこのページ専用で、他のJSは3つの異なるページ用です。したがって、このページのJSは、内部タグと、bodyタグに含まれている2番目の内部ファイルと外部ファイルのみを記述しました。

コード例

HTML
...
<script type="text/javascript" scr="src.js"></script>
<script type="text/javascript">
//some JS and jQuery code
</script>

ブラウザはどの順序でWebページをロードしますか?HTMLを読み取っている場合、最初のスクリプトが見つかったときにこのスクリプトをロードし、完全にロードされるまで待ってからHTMLの読み取りを続行しますか?

内部JSでは、jQuery $(document).ready()関数などの外部スクリプトからいくつかの関数を使用しているため、DOMの準備ができたときにこのイベントがトリガーされるかどうかを知りたいので、これは関数が外部JavaScriptであることを意味します?

4

6 に答える 6

6

Mordernブラウザーは、外部タグsrc属性を持つタグ)に読み取られると、このスクリプトを非同期でダウンロードします。つまり、スクリプトがダウンロードされるときにHTMLの読み取り/解析を続行します。

ただし、ブラウザは後続のすべてのスクリプトの実行をブロックし(ダウンロードではないことに注意)、スクリプト実行キューを考えます。すべてのスクリプトは1つずつキューに入れて実行されますが、ダウンロードは非同期です。

以前のブラウザ(主にIE6とIE7)は異なり、HTML解析プロセスをブロックし、スクリプトがダウンロードされて実行されるのを待ち、残りのHTMLの解析を続行します。

要約すると、ダウンロード実行はスクリプトの異なる段階であり、mordernブラウザーは実行段階をブロックし、ダウンロードは非同期で並列に実行してパフォーマンスを向上させることができます。以前のブラウザーはダウンロード段階をブロックするため、ページの解析効率が低下します。

于 2012-08-14T16:41:40.887 に答える
1

wait until he isn't completely loaded and continue reading HTML

これは動作方法ではなく、ページは非同期で読み込まれます。

in internal JS I use some functions from external script, and in internal script is jQuery $(document).ready() function, and I want to know, if this event is triggered, when DOM is ready, so this mean even external JavaScript?

ドキュメントレディイベントにコールがアタッチされると、コールは追加された順序でキューにアタッチされ、その順序で呼び出されます。

于 2012-08-14T16:38:17.060 に答える
1

スクリプトタグに到達するたびに、ブラウザは解釈されるまで他のコンテンツの読み込みを停止します。これは、ブロック(待機)し、完了するまで画像やその他のコンテンツの取得を開始しないことを意味します。

コードが存在する限り、それを呼び出す前に(たとえば、関数呼び出し)、エラーは発生しません。$(document).ready()関数が定義されている限り、それを使用する前に、$(document).ready()から呼び出されるすべてのコードが安全である必要があります。

于 2012-08-14T16:38:47.100 に答える
0

はい、DOM Readyイベントがトリガーされた場合、それはすべてのJavaScriptがロードおよび解析されたことを意味します。

于 2012-08-14T16:38:31.657 に答える
0

ブラウザは最初にヘッドを解析します。内のhtmlを解析し、検出した<head>スクリプトを実行します。これにより、ページの読み込みがブロックされます。の後、同様の方法で<head>を解析します。<body>これが、domにアクセスする場合に、コードを関数に入れて呼び出すことonloadが重要である理由です。

お役に立てれば!他に何か必要な場合は、以下にコメントを投稿してください。

于 2012-08-14T16:44:28.273 に答える
0

スクリプトは、指定された順序でロードされています。したがって、あなたの場合、インラインスクリプト

<script type="text/javascript">
//some JS and jQuery code
</script>

含まれているスクリプトで定義されたオブジェクトを使用でき"src.js"ます。

DOMオブジェクトを作成する前に操作することはできません。

<body>
  <div id="div1"></div>

  <script>
    // this code can work with div1
    // but cannot work with div2
  </script>

  <div id="div2"></div>
</body>

したがって、スクリプトがDOMで機能する場合は、次のいずれかを実行できます。

  • 最後に配置します<body>(インラインスクリプトの場合のみ)
  • DOM全体が構築された後でのみ呼び出します。

    <body onload="myFunctionThatManipulatesDOM();">

当然、2番目の方法はよりクリーンです。セクションにスクリプトを含め、イベント<head>でページが読み込まれた後にスクリプトを起動しますbody.onload

于 2012-08-14T16:44:44.013 に答える