关于jQuery的getScript()的问题

时间:2010-04-26 06:20:14

标签: javascript jquery external getscript

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. 加载后,是否会被缓存,或者如果多次引用会再次加载?
  2. 如果某个事件依赖于正在加载的文件,那么如果文件需要更长时间加载或未加载,事件是否会延迟失败/超时?
  3. 如果由于某种原因文件无法加载,我如何检查并执行某些操作?
  4. 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

1)除非您在$ .ajax()函数中将其指定为选项,否则永远不会缓存通过AJAX对jQuery的脚本请求。来自documentation

“cache,Boolean

默认值:true,false,对于dataType'script'和'jsonp'

如果设置为false,它将强制您请求的页面不被浏览器缓存。“

2)我想我需要看一些示例代码来掌握这部分问题。

3)如果$ .getScript()失败,则无法执行任何操作。但是,您应该知道$ .getScript()只是$ .ajax()的简写版本,等同于:

$.ajax({
  url: url,
  dataType: 'script',
  success: function(data) {
    //
  }
});

这意味着您可以实现error回调,以便在文件加载失败时做一些聪明的事情,即:

$.ajax({
  url: url,
  dataType: 'script',
  success: function(data) {
    //
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert("panic");
  }
});

答案 1 :(得分:2)

除了Glen的回答,我还想提供另一个选择:

$.getScript({
    url: "foo.js",
    cache: true // or false, depending on your preference. in most cases you would want it true.
}).done(function(){ 
    // do something when script was loaded and run
}).fail(function(){
    // do something when script failed to load
});

在jQuery 1.12.0 +上支持

相关问题