myMethod()
body を閉じる前の script タグでjavascript メソッドを呼び出すと、myMethod()
jQuery の document.ready 関数内で呼び出すのと同じですか? そうでない場合、なぜですか?
3 に答える
ここから:
フードの下: $(document).ready() John Resig から予想されるように、DOM の準備ができているかどうかを判断するための jQuery のメソッドは、さまざまな最適化を使用します。たとえば、ブラウザーが DOMContentLoaded イベントをサポートしている場合 (多くの非 IE ブラウザーがサポートしているように)、そのイベントで起動します。ただし、ドキュメントの readyState が「完了」に達するまで、IE は安全に起動できません。これは通常、後で行われます。これらの最適化が利用できない場合、window.onload がイベントをトリガーします。
これらのイベントは HTML タグ内の場所とは無関係です。他のイベントはレンダリング時でも進行中</body>
です。
いいえ、同じではありません<script>
。終了タグの前にタグを配置</body>
して、古いブラウザーでの HTML のレンダリングのブロックを回避しますが、DOM が「準備完了」であるという保証はありません。
ではない正確に。DOM が読み込まれた直後に発生$(document).ready();
する、いわゆるイベントに反応し、ブラウザはページ上のすべての要素 (コンテンツ自体ではない) を認識します。DOMContentLoaded
通常、コードがこれらのブロック内に配置される主な理由は、並列読み込みのブロックを防ぐこととはあまり関係がありませんが、ページの読み込み中に操作される要素が実際に読み込まれて DOM ツリーに存在するようにするためです。ブラウザが認識していない要素を操作するのはあまり意味がありませんか?
ページの下部に JavaScript コンテンツ (またはその他のコンテンツ) を配置することは、実際にonload
はコンテンツ自体を含め、ページの読み込みが完了した後に発生するイベントにより密接に関連しています。いずれにせよ、ブロック内のコンテンツがページの下部にあるコンテンツの前に実行されることはほぼ確実ですが、ブロック$(document).ready()
内のコードが依存する外部ライブラリをロードすると、ready()
それらをページの下部に配置することはできません。
一般に、外部ライブラリに依存しないコードがあり、DOM のロードが成功している場合は、ページの下部に安全に配置できます。ただし、DOM がロードされた直後に実行する必要があるものがある場合は、そのコードを$(document).ready()
ブロック内に配置する必要がありますが、ページの途中であっても、ブロックを好きな場所に配置できることに注意してください (これは時々良いトリックになることがあります)。