0

我有一个奇怪的错误,我不明白出了什么问题。在我的应用程序中处理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 调用正确返回它只是为了显示代码和错误。我尝试使用 dhtmlx 的 AJAX 请求并且发生了同样的错误。

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

编辑:似乎我在以前的测试中做错了什么,而 setTimeout() 最终是一个可行的解决方案。但我仍然认为它最终应该在没有这种“黑客”的情况下工作。

4

1 回答 1

1

我没有复制所需的环境,但我有一个可能对你有用的长期建议。尝试将ajax调用包装在里面

setTimeout(function() { 你的电话在这里}, 1);

看看情况如何。

编辑:

将回调绑定到 ajax

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

于 2012-11-13T12:19:56.627 回答