2012-02-03 69 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