2013-08-29 33 views
2

我有2個javascript文件不能共存。 如果用戶點擊一個按鈕,它會加載一個js文件。 如果用戶單擊另一個按鈕,則會加載另一個文件。但是最後一個必須卸載第一RequireJS:我如何卸載以前加載的JavaScript文件?又名獨家依賴?或者也許重置RequireJS?

這裏一般是我:

//pseudocode 
if user clicks button one 
    loadScript(one); 
if user clicks button two 
    loadScript(two); 

//not psuedocode 
function loadScript(name) 
{ 
     var javascriptLoc = name + "/config.js"; 

     //Unload any scripts that were previously loaded by requirejs 
     require.undef(); //HELP 

     //once config.js is loaded by requirejs... 
     require([javascriptLoc], function(util) { 

      //do stuff 

     }); 
} 

有沒有辦法卸載一個/ config.js或裝載兩個/ config.js 代替 ?然後當用戶點擊「one」時,它會加載一個/ config.js 而不是 two/config.js?

其他方式詞的問題:

  • 有什麼值得我requirejs做時,我有獨家依賴關係 ...

  • 我該如何應對requirejs 解決衝突 ...

  • 我該如何重置或卸載以前載入的腳本由requirejs編輯...

+0

...難道我將不得不使用除了RequireJS一些其他的方法? :(http://net.tutsplus.com/articles/web-roundups/for-your-script-loading-needs/ – Kayvar

+0

其他腳本加載器無法卸載腳本。:( – Chris

+0

專注於獲取這些腳本文件co - 存在有各種各樣的方法來沙盒腳本文件的內容 –

回答

3

嚴格來說,瀏覽器不會讓你卸載JavaScript文件。如果你加載一個文件a.js,上面寫着:

var a = 345; 

在JS/HTML中沒有可以撤消的命令。 (參見herehere

您可以加載一組新的JS命令是否定的第一個文件的影響,例如:

if (typeof a === "undefined") 
    var a = 34; 
else 
    a = 34; 

這開始變得複雜,雖然,不是嗎」它呢?這可能是更容易重新設計模塊,因此重裝是沒有必要的,例如:

function option1() { 
} 
function option2() { 
} 

//if user clicks button 1 
currentOption = option1(); 
//if user clicks button 2 
currentOption = option2(); 
+0

不刪除實際的腳本標籤卸載相關的腳本文件? –

+1

沒關係:) http://stackoverflow.com/a/4669114/352552 –