$(document).readyは必要ですか?


111

私はこの質問をスタックオーバーフローで見ましたが、まったく答えられたとは感じていません。

である$(document).ready必要?

私はすべてのJavaScriptをページの下部にリンクしているので、理論的には、いずれにしてもドキュメントの準備ができてから実行されます。


3
古いブラウザは、新しいブラウザが採用している並行ダウンロードを楽しむことができない場合があります。これが、スクリプトが下部に配置される主な理由です。具体的には、HTMLとCSSを古いブラウザーで最初にレンダリングできるようにします。この時点で、DOMがロードされていることを検知する方法を選択できます。jsを開始するための2つの一般的なメソッドは、window.onloadと$(document).ready(jQueryと組み合わせて)です。他にもオプションがあり、window.onloadには明らかな欠点があります。ポイントは$(document).readyがより頻繁に機能し、使いやすいことです。
BradChesney79 2014年

回答:


125

である$(document).ready必要?

番号

すべてのスクリプトを</body>終了タグの直前に配置した場合、まったく同じことを行ったことになります。

さらに、スクリプトがDOMにアクセスする必要がない場合、他のスクリプトへの可能な依存関係を超えてどこにロードされるかは問題ではありません。

多くのCMSでは、スクリプトをロードする場所をあまり選択できないため、モジュラーコードがdocument.readyイベントを使用するのに適した形式です。古いコードを他の場所で再利用する場合、以前のコードに戻ってデバッグしますか?

オフトピック:

補足として、エイリアスをに強制するので、jQuery(function($){...});ではなくを使用する必要があります。$(document).ready(function(){...});$


その「まったく同じもの」でよろしいですか?私はあなたのcss(またはメインhtmlと並行してロードされた他のコード)がまだ完全に解析されていないかもしれないという印象を受けました。
Zach Lysobey 2013

6
@ ZachL、CSSが完全に解析される前にドキュメントが準備されている可能性があります。document.ready 同じではありませんようにonload、画像や他の外部の資産のロードが終了したイベント、。
zzzzBov 2013

説明をありがとう。
Zach Lysobey 2013

5
これは、「いいえ」だけ念uはと</ body>のミスを作るいけない...私の仕事の3時間を要していない<身体> :)
teejay

1
ただし、特にnoConflict()何らかの理由で使用する必要がある場合は特に、エイリアスを強制することに必ずしも同意しません。
Jay Blanchard、2014

22

いいえ、JavaScriptが閉じる前の最後のものである場合は、これらのタグを追加する必要はありません。

ちなみに、$(document).readyの略記は以下のコードです。

$(function() {
// do something on document ready
});

この質問はいいかもしれません。あなたはそれを読みました? jQuery:ページの下部に外部JSがある場合、なぜdocument.readyを使用するのですか?


6
質問は基本的に、「スクリプトを本文の下部に配置するときにドキュメントを準備する必要がありますか?」ではなく、「簡単な記述方法はありますか」ではありません$(document).ready()
nnnnnn 2013年

4

いいえ、遅延が発生していないことがわかっていれば必要はありません。ほとんどの場合、作業内容を上から下まで開発したかどうかがわかります。

-それを完全に監査せずに他の誰かのコードを取り込むとき、あなたは知らないのです。

それで、あなたはあなたがあなたが構造であなたを助けるフレームワークまたはエディタを使っているかどうかあなた自身に尋ねますか?あなたは他の誰かのコードを持ち込んでいて、各ファイルを読むことを気にしていませんか?コードをテストするためのオペレーティングシステム、ブラウザ、ブラウザバージョンのマトリックスを確認する準備はできていますか?あなたが行う必要があるコードからの速度のすべての単一のオンスを圧迫しますか?

document.ready()は、これらの質問の多くを無関係にします。document.ready()は、作業を簡単にするために設計されました。それは、小さな(そして私はあえて許容できると言えます)パフォーマンスヒットになります。


ちょうど私が見た何か-あなたの編集の1つが拒​​否されましたが、それは私には問題なく見えます。あなたはそれを再提出したいかもしれません:stackoverflow.com/review/suggested-edits/3224385
Qantas 94 Heavy

1

jqueryの使用に関するインターネット全体での参考資料/ブログ投稿を見てきましたdocument.ready。私の意見では、それを使用することも、すべてのJavaScriptをページの下部に配置することも、どちらも有効です。そして今問題はどちらがより良いでしょうか?それはプログラミングスタイルの問題です。


0

いいえ、必要ありません。body終了タグの直前にスクリプトタグを配置するか、IE9 +をサポートしている場合はネイティブJSを使用できます。

<script>alert('DOM Loaded!');</script>
</body>

<script>
document.addEventListener("DOMContentLoaded", function(event) { 
      // DOM has loaded ready to fire JS scripts
    });
</script>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.