7

HEADページ上の最後のスクリプト (現在解析済み) の前に、非同期的にロードするスクリプト タグを動的に挿入するJavaScript がタグに含まれています。この動的に含まれるスクリプト タグには、DOM が使用可能になった後、すべての画像とスクリプト タグが読み込まれる前に DOM を解析する必要がある JavaScript が含まれています。すべての JS が読み込まれる前に JavaScript の実行を開始することが重要です。スクリプトがハングすると、ユーザー エクスペリエンスが低下します。DOMContentLoadedこれは、イベントが発生するのを待つことができないことを意味します。script タグを動的に含む JavaScript の最初のビットをどこに配置するかに関して、私には柔軟性がありません。

DOMContentLoaded私の質問は、イベントを待たずに、すぐに DOM の解析を開始しても安全ですか? DOMContentLoadedそうでない場合、イベントを待たずにこれを行う方法はありますか?

4

4 に答える 4

0

次の記事をよく読むことを強くお勧めします。この記事では、スクリプトの読み込みの謎と実際の DOM の準備状況について詳しく説明し、いつ何をどのように実行しても安全なのか、ブラウザーの不一致も考慮に入れています。

http://www.html5rocks.com/en/tutorials/speed/script-loading/

于 2014-01-13T05:05:03.157 に答える
0

はい、DOM が読み込まれたことをユーザー エージェントが通知するまで待つ必要があります。ただし、これを行う方法は複数あります。

onreadystatechange to interactiveDOMContentLoadedには違いがあります。

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.htmlによると 、ドキュメントの解析を停止した後、ユーザー エージェントが最初に行うことは、 ドキュメントの準備状態を「インタラクティブ」に設定することです。 "。

ユーザー エージェントは、スクリプトが読み込まれるのを待ちません。

ドキュメントの準備状況が変化すると、ユーザー エージェントは Document オブジェクトで readystatechange を起動します。

したがって、心配しているスクリプトがインラインでない場合は、readystatechange を使用することができます。

クロスブラウザについて: これが仕様です。

于 2014-01-13T00:04:28.653 に答える