javascript - 当所有脚本通过 $.getScript 完成加载时调用处理程序

标签 javascript jquery ajax

假设我们通过 $.getScript 加载了一堆脚本:

$.getScript( 'js/script1.js' );
$.getScript( 'js/script2.js' );
$.getScript( 'js/script3.js' );

现在,我想在所有这些脚本加载完成后调用一个处理程序。我尝试为全局 ajaxStop event 绑定(bind)一个处理程序.根据the docs , ajaxStop 全局事件被触发,如果没有更多的 Ajax 请求被处理。

$( document ).ajaxStop( handler );

但它不起作用(未调用处理程序)。

现场演示: http://jsfiddle.net/etGPc/2/

我怎样才能做到这一点?

最佳答案

我深入研究了这个问题,确实是跨域脚本请求需要注意。正如我在评论中发布的那样,该方案已经实现,因此它将 global 选项设置为 false。这使得 jQuery 不会触发全局 ajax 事件。 (虽然不知道为什么已实现。)

这可以通过 this fiddle 确认(传递意味着 ajaxStop 被触发):

  • 跨域,无脚本:通过
  • 跨域,脚本:失败
  • 无跨域,无脚本:通过
  • 不跨域,脚本:通过

最直接的做法是简单地添加另一个预过滤器,强制 global 选项为真:

jQuery.ajaxPrefilter( "script", function() {
    s.global = true;
});

这也使这个失败的场景成为过去。

关于javascript - 当所有脚本通过 $.getScript 完成加载时调用处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8028724/

相关文章:

JavaScript 不在 PHP 加载的 HTML 上运行

javascript - 使用 Javascript 检测宽度

javascript - jQuery 字符计数 - 函数未被调用

javascript - 使用 php ajax 表单发送数据时 AJAX 请求失败

javascript - 使用 HTML5 模式的 AngularJS 路由 404 错误

javascript - 使用 Nan 检查 node.js 插件中的 instanceof

jquery - CSS 不适用于 jQuery mobile 中动态创建的元素

javascript - JQuery 验证失败

ajax - woocommerce 结帐 ajax 500 错误

Ajax 没有设置 header - React with TS