2011-12-26 17 views
26

http://caniuse.com/script-deferによると、ほとんどのブラウザはscriptタグのdefer属性をサポートしています。

<script defer src="...">で指定されたスクリプトがjQueryの$(document).ready()の前後に実行されるかどうかを知りたいですか?現代的で最新のブラウザ(Chrome、Firefox、IEなど)は実行順に一貫していますか、それとも異なるのですか?

答えて

14

このフィドルに基づいて、私はjQueryの$(document).ready()deferで宣言されたスクリプトの後を実行言わなければなりません。私はFirefoxとChromeでテストしたが、どちらもスクリプトのシーケンスとは独立して同じ動作をしていた。

他のブラウザの動作は、実装に基づいて変更される可能性があるので、常に不明です。

EDIT:このように、defer属性は、外部のjavascriptファイルで使用する必要があります。私はこの結果を見せるためにフィドルを編集しました。明らかに同じ結果でした。ここ

更新フィドル:単にhttp://jsfiddle.net/RNEZH/15/

+3

同じ結果がSafariにあります。 – Charlie

+2

Operaで同じ結果が得られましたが、外部スクリプトにとって興味深いdefer属性ではありませんか?私はは意味をなさないとは思わない。 – Bergi

+0

@Bergi、外部かどうか、 'defer'属性はスクリプトの実行を延期するためのものです。どういう意味がないと思いますか? –

12

defer属性の値は、write-up and analysisです。 またdeferがHTML5でどのように再定義されたかについての追加情報については、投稿へのコメントを参照してください。

私の結論:deferは、カウントするにはブラウザーにも依存しません。そのため、jQueryのdoc対応技術を使用してください。

別の言い方をすれば、jQueryの重要な理由は、ブラウザの不一致をカバーすることです。 Deferはよく書かれたページでは避けなければならない別の矛盾です。

+0

私はどこにコメントがありませんHTML5で再定義されました。 – nilskp

5

scriptdeferが使用されているかどうか$(document).ready()かないと、ほぼすべての主要なブラウザsupportdefer前に実行する必要があります。

しかし、安全面では、$(document).ready()deferの両方を使用することをおすすめします。 だからなぜdefer? Googleのページスピードツールでは、ページがすぐに表示される(外部スクリプトが並行して読み込まれる)ようになり、Googleのページスピードツールでは非常に重要な要素となるため、ここで詳細を見つけることができます。http://code.google.com/speed/page-speed/docs/payload.html#DeferLoadingJS

関連する問題