$ .getScript():有条件地加载js脚本

时间:2012-04-19 20:31:38

标签: javascript jquery

是否有可能在$ .getScript()中创建一个条件,如果第一个js脚本无法加载 - 无论出于何种原因 - 然后运行第二个js?像备份?

任何使用jQuery 1.2和/或1.4的方法都可以吗?

非常感谢!

2 个答案:

答案 0 :(得分:3)

只要您使用的是jQuery 1.5或更高版本,$ .getScript()就会返回一个Promise,因此您可以将一个函数附加到成功和失败。他们在他们的文档中显示了一个例子,他们如此依次失败:

$.getScript("ajax/test.js")
.done(function(script, textStatus) {
  console.log( textStatus );
})
.fail(function(jqxhr, settings, exception) {
  $( "div.log" ).text( "Triggered ajaxError handler." );
});

没有理由不能在.fail()调用的函数中执行另一个$ .getScript()。

答案 1 :(得分:1)

您是否为此阅读了文档?很明显,从jquery 1.5开始,你可以使用.fail()

$.getScript("ajax/test.js")
.done(function(script, textStatus) {
  console.log( textStatus );
})
.fail(function(jqxhr, settings, exception) {
  $( "div.log" ).text( "Triggered ajaxError handler." );
});  

在此之前,您使用全局ajax错误:

$( "div.log" ).ajaxError(function(e, jqxhr, settings, exception) {
  if (settings.dataType=='script') {
    $(this).text( "Triggered ajaxError handler." );
  }
});

或更实际,只是不要依赖于getscript,并使用.ajax fn:

$.ajax({
  url: url,
  dataType: "script",
  success: success,
  error:function(){
    //load the second script here
  }
});