サードパーティのスクリプトの読み込みが完了するまで、ドロップダウン メニューなどのページの UI コンポーネントが利用できないという問題があります。これらのサーバーで何が起こっているかは誰にもわからないため、これは問題を引き起こします。ページのインタラクティブなコンポーネントの可用性を、サードパーティのものの読み込みから切り離す必要があります...
どうやって?
=/
サードパーティのスクリプトの読み込みが完了するまで、ドロップダウン メニューなどのページの UI コンポーネントが利用できないという問題があります。これらのサーバーで何が起こっているかは誰にもわからないため、これは問題を引き起こします。ページのインタラクティブなコンポーネントの可用性を、サードパーティのものの読み込みから切り離す必要があります...
どうやって?
=/
次のようなものを試してください。
<script type="text/javascript">
window.onload = function() {
var scripts = [ '3rdparty1url','3rdparty2url','3rdparty3url',etc...];
var head = document.getElementsByTagName('head')[0];
for(var i = 0; i < scripts.length; ++i) {
var scriptTag = document.createElement('script');
scriptTag.src = scripts[i];
head.appendChild(scriptTag);
}
}
</script>
これにより、クライアントのブラウザでのページの読み込みが完了した後に、外部スクリプトファイルが読み込まれます。フォームUI要素がすべて使用可能になっている必要があります。
jQueryを使用している場合は、次のことができます。
<script type="text/javascript">
jQuery(function($){
var scripts = [ '3rdparty1url','3rdparty2url','3rdparty3url',etc...];
$.each(scripts, function(i,scrurl) {
$('head').append($('<script>', { src: scrurl }));
}
});
</script>
ページが適切に分解できるように、ページを慎重に検討する必要があります。
JS が読み込まれる前に、メニューを「裸の」形式で利用できるようにします。一度読み込まれたら、UI を超豪華で機能がいっぱいになるように変更できます :)
これは、JS をオフにしているユーザー (おそらく多くはありませんが、それでも...) や、メニューのコンテンツをキャッチするスパイダーのインデックス作成にも役立ちます。
JS パフォーマンスの第一人者である Steve Souders が JavaScript のブロックと非同期読み込みについて説明し、概要を説明しています。詳細については、Google の「非同期 JavaScript 読み込み」を参照してください。外部ファイルをスケジュールしてロードできる ライブラリもあります。もう一つ。