$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. 一旦加载,它是缓存还是被引用多次,还是再次加载?
  2. 如果事件取决于加载此文件,如果文件需要更长的加载或不加载,则会延迟失败/超时?
  3. 如果文件由于某种原因无法加载,我该如何检查并执行某些操作?

在此先感谢您的帮助。

有帮助吗?

解决方案

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

“缓存,布尔值

默认值:true,false for Datatype“脚本”和“ 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");
  }
});

其他提示

除了格伦的答案外,我还想提供另一种选择:

$.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+上支持

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top