2011-10-30 28 views
3

他のウェブサイトからオブジェクト(画像、スクリプト、iframeなど)を参照しています。場合によっては、他のサイトがダウンしているため、ブラウザがオブジェクトを「スキップ」するのに約30秒かかることがあります。たとえば、5秒後にオブジェクトを「スキップする」ことができますか?Javascript:オブジェクトの読み込みを「強制終了」するにはどうすればよいですか?

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script> 

答えて

2

チェックアウトyepnope

はここにいくつかのサンプルコードです。ここではストレートのホームページから抜粋です:

yepnope.jsリソースフォールバックを行うと、まだ最初のと並行して 依存のスクリプトをダウンロードする機能を持っています。より明確に:

yepnope([{ 
    load: 'http:/­/ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js', 
    complete: function() { 
    if (!window.jQuery) { 
     yepnope('local/jquery.min.js'); 
    } 
    } 
}, { 
    load: 'jquery.plugin.js', 
    complete: function() { 
    jQuery(function() { 
     jQuery('div').plugin(); 
    }); 
    } 
}]); 

私は自分自身をロールバックするかどうかを決定する前にyepnopeや他の既存のスクリプトローダーを調査示唆しています。これらのローダーは非常に小さく(yepnopeは1.6kBと主張しています)、独自のソリューションを作成することで得ることはあまりありません。

+0

素晴らしい点。 [Modernizr](http://www.modernizr.com/)にはyepnope iircが付属しており、[require.js](http://requirejs.org/)もあります。 – kojiro

1

HTML5には、scriptの属性がasyncであり、スクリプトを非同期に読み込むことでこの難点を相殺します。一部のブラウザでは、同様の非標準のdefer属性を実装しています(but not exactly the same)。画像などのscripts以外のリソースについては、実際にJavaScriptを使用して非同期にロードすることができます(たとえば、その場でイメージ要素を作成するなど)。この方法の欠点は、非同期JavaScriptが非同期イメージをロードする原因となる場合、という非常に高いリスクが発生することです。

関連する問題