2011-02-23 50 views
2

我有一個網頁,其中包含一個動態添加的Javascript文件。 更改腳本後(添加allert或smth像這樣),我重新加載頁面,並按下觸發器按鈕添加腳本,但瀏覽器使用舊的(chached)。 在鉻和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代碼進行評估,以便瀏覽器「識別」它們。 – DashK

+1

不理解你 – lvil

回答

2

如果是外部腳本緩存,請將當前日期和時間附加到腳本末尾。 IE:

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

你正在附加的Date()對象的字符串表示 - 應該是nowDate.getTime()或urlencoded – Andy

+0

@安迪謝謝,更新 –

0

IE不會觸發加載事件,您必須改用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

也許你知道爲什麼IE有錯誤對象的預期在這裏: functionInTheNewFile();打破;雖然它開始執行部分功能 – lvil