動的スクリプト読み込みを使用して、最初のページ読み込みの時間を短縮します。スクリプトで定義された関数とオブジェクトに確実にアクセスできるようにするには、スクリプトが完全に読み込まれていることを確認する必要があります。
私はこの目的のために独自の Javascript ライブラリを開発したため、さまざまなライブラリでどのように行われているかを調べて、このテーマについてかなり多くの調査を行いました。この問題に関する議論の中で、LABjsの作成者である Kyle Simpson 氏は次のように述べています。
LABjs (および他の多くのローダー) は、すべてのスクリプト要素に「onload」と「onreadystatechange」の両方を設定し、一部のブラウザーが一方を起動し、一部のブラウザーが他方を起動することを認識しています...
この例は、この記事の執筆時点での jQuery の現在のバージョンである v1.3.2 にあります。
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState ||
this.readyState == "loaded" || this.readyState == "complete") ) {
done = true;
success();
complete();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
head.removeChild( script );
}
};
これは最先端の技術ですが、Opera 9.64 の奇妙な動作を分析しているときに、この手法を使用すると、onload コールバックがあまりにも早く起動されたという結論に達しました。
この質問への回答として私自身の調査結果を投稿し、コミュニティからさらなる証拠とフィードバックを収集したいと思います.