2012-02-03 92 views
0

我想加載一個Javascript文件的點擊事件,而不是加載在頁​​面加載事件,出於性能原因。 有沒有人知道,如果JavaScript已經加載特別?JavaScript加載檢查通過jquery getscript

現在我保持一個全局變量來檢查「裝」事件

var javascriptLoaded=false 

if (!javascriptLoaded) 
     $.getScript('/scripts/test.js', function() { 
      javascriptLoaded = true; 
      setTimeout(function() { 
      callSomeFunctionhere(); 
      }, 1000);      
     }); 

是否有這樣做的沒有更好的辦法?

+1

的可能重複[檢查的JavaScript加載文件] (http://stackoverflow.com/questions/4036203/check-if-javascript-file-was-loaded) – 2012-02-03 22:28:22

+0

@Diodeus該問題只回答jquery作爲jquery有$或Jquery對象 – kobe 2012-02-03 22:32:26

回答

1

是的。你想要做的是使用成功回調。只有在加載腳本的ajax請求成功完成後纔會調用回調方法。例如,這是等價的:

$.ajax({ 
url: "/myscript.js", 
dataType: "script", 
success: function(){ 
    scriptLoaded = true; 
    //do some more stuff now that the script is loaded 
} 
failure: function(){ 
    scriptLoaded = false; 
} 

}); 
+0

謝謝,但我已經這樣做了如果你看我的代碼 – kobe 2012-02-03 22:34:40

+0

啊,我明白了。嘗試使用require.js http://requirejs.org/,或者如果你還想添加條件加載,你可以使用yepnope.js http://yepnopejs.com/ – gaffleck 2012-02-03 22:40:47

+0

謝謝gaffleck,我會看看他們 – kobe 2012-02-03 22:45:28

1

一個簡單的方法來檢查是否已加載一個腳本,看看是否能腳本調用的:

if($.fn.foo == undefined) { 
    $.getScript("/path/to/script/foo.js", function() { 
     // success 
    }); 
} 
+0

這隻會工作如果你有命名空間的話 – kobe 2012-02-04 17:50:42