http://caniuse.com/script-deferによると、ほとんどのブラウザはscript
タグのdefer
属性をサポートしています。
<script defer src="...">
で指定されたスクリプトがjQueryの$(document).ready()
の前後に実行されるかどうかを知りたいですか?現代的で最新のブラウザ(Chrome、Firefox、IEなど)は実行順に一貫していますか、それとも異なるのですか?
http://caniuse.com/script-deferによると、ほとんどのブラウザはscript
タグのdefer
属性をサポートしています。
<script defer src="...">
で指定されたスクリプトがjQueryの$(document).ready()
の前後に実行されるかどうかを知りたいですか?現代的で最新のブラウザ(Chrome、Firefox、IEなど)は実行順に一貫していますか、それとも異なるのですか?
このフィドルに基づいて、私はjQueryの$(document).ready()
はdefer
で宣言されたスクリプトの後を実行言わなければなりません。私はFirefoxとChromeでテストしたが、どちらもスクリプトのシーケンスとは独立して同じ動作をしていた。
他のブラウザの動作は、実装に基づいて変更される可能性があるので、常に不明です。
EDIT:このように、defer
属性は、外部のjavascriptファイルで使用する必要があります。私はこの結果を見せるためにフィドルを編集しました。明らかに同じ結果でした。ここ
更新フィドル:単にhttp://jsfiddle.net/RNEZH/15/
defer属性の値は、write-up and analysisです。 またdefer
がHTML5でどのように再定義されたかについての追加情報については、投稿へのコメントを参照してください。
私の結論:defer
は、カウントするにはブラウザーにも依存しません。そのため、jQueryのdoc対応技術を使用してください。
別の言い方をすれば、jQueryの重要な理由は、ブラウザの不一致をカバーすることです。 Deferはよく書かれたページでは避けなければならない別の矛盾です。
私はどこにコメントがありませんHTML5で再定義されました。 – nilskp
、script
はdefer
が使用されているかどうか$(document).ready()
かないと、ほぼすべての主要なブラウザsupportdefer
前に実行する必要があります。
しかし、安全面では、$(document).ready()
とdefer
の両方を使用することをおすすめします。 だからなぜdefer
? Googleのページスピードツールでは、ページがすぐに表示される(外部スクリプトが並行して読み込まれる)ようになり、Googleのページスピードツールでは非常に重要な要素となるため、ここで詳細を見つけることができます。http://code.google.com/speed/page-speed/docs/payload.html#DeferLoadingJS
同じ結果がSafariにあります。 – Charlie
Operaで同じ結果が得られましたが、外部スクリプトにとって興味深いdefer属性ではありませんか?私はは意味をなさないとは思わない。 – Bergi
@Bergi、外部かどうか、 'defer'属性はスクリプトの実行を延期するためのものです。どういう意味がないと思いますか? –