jQuery的ajaxComplete()可以检测PrototypeJS的Ajax调用吗?

4
(function($){
    $(document).ready(function(){   
      $(document).ajaxComplete(function() {
         console.log("finished")
      });
    });
})(jQuery);

这不会在页面上的原型调用之后触发。
但是这个原型代码是可以工作的:
Ajax.Responders.register({
  onCreate: function() {
    console.log("start")
  },
  onComplete: function() {
    console.log("finished")
  }
});

之前在页面上加载了多个jQuery库时,可能会出现与ajaxComplete相关的问题,但现在不再存在这种情况。

jQuery ajaxComplete()能检测原型ajax调用吗?

谢谢!


请注意,由于Magento历史上是基于prototypeJS构建的,因此$实际上是prototypeJS库。如果在Magento上已经有$j = jQuery.noConflict();,那么这可以简化您的实际代码。因此,$('some')表示一个prototypeJS对象,而$j('some')表示一个jQuery对象。 - β.εηοιτ.βε
1个回答

4

简短回答:不行。

详细回答:因为jQuery和PrototypeJS以不同的方式抽象了基本的XHR功能,它们以自己的方式跟踪活动XHR请求的数量并触发自己的回调函数。

例如,在PrototypeJS中,当Ajax请求开始或完成时,activeRequestCount会分别递增或递减。

Ajax.Responders.register({
  onCreate:   function() { Ajax.activeRequestCount++ },
  onComplete: function() { Ajax.activeRequestCount-- }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接