9

HTML ドキュメント (たとえば本文) にインライン Javascript コードがあると仮定すると、この Javascript は常に JQuery ドキュメント対応コードの前に実行されますか?

例えば、以下は安全ですか?

...
<body>
    <script type="text/javascript">
        var myVar = 2;
   </script>
   ...
</body>

...
$(document).ready(function() {
    alert('My Var = ' + myVar);
}

myVarそうでない場合、インライン/ブロックコードで定義されていることを知って安全にするにはどうすればよいですか?

4

3 に答える 3

12

はい、上記のコードは安全です。インライン JS は、ドキュメントが上から下に解析されている間に発生すると実行されます。ドキュメント準備ハンドラーは、ドキュメントの準備ができたときに実行され (明らかに)、インライン スクリプトを含めてドキュメント全体が解析されるまで準備が整いません。

ドキュメント本文の最後にラップするコードを含める場合、ドキュメント対応ハンドラーは実際には必要ないことに注意してください。その時点で、他のインライン JS が実行されるだけでなく、すべてのドキュメント要素が実行されるためです。 DOM に追加され、JS からアクセスできるようになります。

于 2013-05-18T12:54:18.493 に答える
7

はい、HTML の解析中にインライン JavaScript が実行されます。

まだ解析されていない DOM 要素 (つまり、HTML ソース コードのスクリプト ブロックの後の要素) への参照を取得しようとしない限り、これを行っても安全です。また、以前のスクリプト ブロックで定義された変数を参照することもできます (それらがスコープ内にある場合)。

</body>また、Matt Browne がコメントで指摘したように、閉じタグの直前に読み込まれる DOM に依存するスクリプトを配置する場合、DOMContentLoaded リスナー (または oldIE の回避策、window.onload) を使用しないことも一般的に安全です。その時点で、すべての HTML 要素はすでに DOM に含まれています (</body>無効な HTML となる の後にさらに要素がある場合を除きます)。

于 2013-05-18T12:54:50.370 に答える
1

myVAr内から にアクセスできると想定しても安全$(document).ready(function() {})です。

HTML でコードを実行すると、 はJS グローバル オブジェクト (つまり)myVarのプロパティになります。jQuery関数でローカルに作成する必要はないと思います。windowwindow.myVar

于 2013-05-18T13:25:17.023 に答える