我有一个奇怪的错误,我不明白出了什么问题。在我的应用程序中处理 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()最终是一个有效的解决方案。 但我仍然认为它最终应该没有这个“黑客”。
答案 0 :(得分:1)
我没有复制所需的环境,但我有一个可能对你有用的远景建议。尝试在
中包装ajax调用setTimeout(function(){your call here},1);
看看它是怎么回事。
编辑:
将回调绑定到ajax
$ .ajax()。done(function(data){console.log(data);});