$ .ajaxSend,$ .ajaxComplete,Rails UJS和Chrome

时间:2013-01-24 07:10:41

标签: google-chrome jquery

我的rails项目中有ajaxified链接:

<%= link_to 'Click me!', some_url, remote: true %>

我添加了钩子来监听ajax事件:

$(function(){
  $(document).ajaxSend( function(){$('#busy').show()} )
  $(document).ajaxComplete( function(){$('#busy').hide()} )
})

这在FF中可以正常工作。

在Chrome中,当发送ajax请求时,#busy div会按预期显示,但当请求到达时,Chrome会显示空白,并且控制台会显示一条长javascript错误消息:

jQuery.event.dispatch
elemData.handle.eventHandle
jQuery.event.trigger
(anonymous function)
jQuery.extend.each
jQuery.fn.jQuery.each
jQuery.fn.extend.trigger
... (several hundred lines of pretty much the same stuff)

为什么Chrome会对看似简单添加事件处理程序的事情进行抨击?

1 个答案:

答案 0 :(得分:0)

我知道这不能直接回答你的问题,但是在这个页面上很好地捕获了处理ajax事件的rails方法:https://github.com/rails/jquery-ujs/wiki/ajax

这可能与事件向上传递的方式有关。

<%= link_to 'Click me!', some_url, remote: true, id: 'clickable' %>

$('#clickable').on('ajax:beforeSend', function(event, xhr, settings) {
  $('#busy').show()
});

$('#clickable').on('ajax:complete', function(event, xhr, settings) {
  $('#busy').hide()
});