同步AJAX请求关注Firefox中的错误元素

时间:2012-11-13 11:33:46

标签: javascript ajax firefox

我有一个奇怪的错误,我不明白出了什么问题。在我的应用程序中处理 TAB 键时,如果我在事件处理程序中执行同步AJAX请求,Firefox将把焦点放在错误的元素上。

我设法在这里制作了一个简单的测试用例:http://jsfiddle.net/aVeQp/18/

如果单击结果部分然后按Tab键,前两次它正常工作(转到下一个单元格),但最后一次,它将焦点放在“home”元素上。如果您将查询更改为异步,则焦点不会转到主页按钮。

var ret = $.ajax({
            type: 'POST',
            url: "",
            data: { action: "test"},
            datatype: "xml",
            async: false
            });

在Linux下不会发生这种情况,但我在Windows 7 64位下遇到了Firefox 16.0.2的错误。

我知道ajax调用在jsfiddle上运行不正常但是我自己的安装上发生错误,ajax调用正确返回它只是为了显示代码和bug。我尝试使用dhtmlx的AJAX请求并发生同样的错误。

有没有人知道我做错了什么?我已经尝试了很多东西,似乎firefox并不关心在这种特定情况下阻止事件的传播。

编辑:似乎我在之前的测试中做错了,而setTimeout()最终是一个有效的解决方案。 但我仍然认为它最终应该没有这个“黑客”。

1 个答案:

答案 0 :(得分:1)

我没有复制所需的环境,但我有一个可能对你有用的远景建议。尝试在

中包装ajax调用
  

setTimeout(function(){your call here},1);

看看它是怎么回事。

编辑:

将回调绑定到ajax

  

$ .ajax()。done(function(data){console.log(data);});