2009-03-10 12 views
0

自分のサイトの外部イメージ/静的ファイルのCDNを使用し始めたばかりで、このCDNが失敗した場合のバックアップ方法を知りたかったのです。 HTML/JavaScriptファイルで外部リンクを参照する方法はありますか?それは、最初の外部ホストで利用できない場合、そのファイルのフォールバックの場所を指定することができますか?HTML/JavaScriptでファイルを読み込んでロードする方法はありますか?ロードされない場合はフォールバックがありますか?

答えて

3

この最初の回答は、すべてのブラウザで機能しない場合があります。/remote/script.jsにいくつかの変数 "loaded = true"を設定して、次のスクリプトブロックでチェックすることができます。

<script> 
loaded=false 
</script> 
<script src="some/remote/script.js"></script> 
<script> 
if(loaded==false){ 
    //do what you want here if it didn't load 
} 
</script> 
0

編集:最初の試みは間違っていた)

<script src="some/remote/script.js"> 
    // Set a flag in the above script 
</script> 
<script> 
    if (! flag) { 
     // This code runs if script.js fails to load for some reason 
    } 
</script> 

<object data="http://cdn/file.png" type="image/png"> 
    <!-- You can nest objects in here too --> 
    <img src="http://local/file.png" alt="Fallback Image"/> 
</object> 

だから私はあなたがすべてのためにスクリプトを使用することができたと。リモートファイルが読み込まれない場合は、フォールバックコードを使用して、すべてのパスをバックアップサーバーを指すように変更します。

+0

スクリプトの回答が間違っています。 (FFの簡単なテスト) - http://www.w3.org/TR/REC-html40/interact/scripts.html#adef-src-SCRIPTにも記載されています。「srcにURI値がある場合は、ユーザエージェントは要素の内容を無視しなければなりません " – Dror

+0

私は間違って思い出したと思います。 – flussence

1

この上に良い記事がここにあります:http://happyworm.com/blog/2010/01/28/a-simple-and-robust-cdn-failover-for-jquery-14-in-one-line/

これはjqueryのを取得するために、マイクロソフトのAjax CDNを使用して、サイト上で私のために便利になりました。 HTTPSページでjqueryを使用したときに、マシンがCDNのSSL証明書を信頼しなかった顧客がいくつかありました。この問題を解決するには、ローカルのフォールバックが良い方法です。

フォールバックを挿入するかどうかは、スクリプトがグローバル名前空間に追加したはずの変数をチェックすることによって行われます。例えば

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> 
<script type="text/javascript"> 
//<![CDATA[ 
if (typeof jQuery == 'undefined') {document.write(unescape("%3Cscript src='/Scripts/jquery.min.js' type='text/javascript' %3E%3C/script%3E"));} 
//]]> 
</script> 
+0

素晴らしいリソースですが、リンクをたどることなく答えを出すことができますか? –