2011-02-23 17 views
2

動的に追加されたJavascriptファイルを持つWebページがあります。 スクリプトを変更した後(このようにallertまたはsmthを追加する)、私はページをリロードし、スクリプトを追加するためのトリガーボタンを押しますが、ブラウザは古いもの(chached)を使用します。 これをChromeとIEで試してみました。 他のスクリプト(動的に追加されないスクリプト)はうまくリロードされます。動的に追加されたJavascriptはリロードされません

function addScript (s) 
{ 
    script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = s; 
    document.getElementsByTagName('head')[0].appendChild(script); 
    script.onload=function() 
    { 
     switch (s) 
     { 
      case 'some address': 
       functionInTheNewFile(); break; 
      default: break; 
     } 
    }; 
} 

ここで間違っているもの:

ここでスクリプトをロードする機能がありますか?

+0

Eval - 新しいJavaScriptコードがブラウザによって認識されるようにするには、新しいJavaScriptコードを評価してください。 – DashK

+1

あなたが理解していない – lvil

答えて

2

外部スクリプトのキャッシュである場合は、現在の日付と時刻をスクリプトの末尾に追加します。 IE:

var nowDate = new Date(); 
script.src = s + "?nocache=" + nowDate.getTime(); 
+1

Date()オブジェクトの文字列表現を添付しています - nowDate.getTime()またはurlencodedにする必要があります – Andy

+0

@Andyありがとう、 –

0

IE loadイベントは発生しません。代わりにattachEventを使用する必要があります。そして、スクリプトを見つける前に常にeventlistenerを追加してください。

script = document.createElement('script'); 
script.type = 'text/javascript'; 
if(script.attachEvent) { 
script.attachEvent('onreadystatechange', callback); 
} else { 
    script.onload = callback; 
} 
script.src = s; 
+0

が更新されている可能性があります。 functionInTheNewFile();ブレーク;関数の一部を実行し始めますが – lvil

関連する問題