0

奇妙なバグがあり、何が問題になっているのかわかりません。アプリケーションでキーを処理するときTABに、イベントハンドラーで同期AJAXリクエストを実行すると、Firefoxは間違った要素にフォーカスを与えます。

私はここで簡単なテストケースを作成することができました:http://jsfiddle.net/aVeQp/18/

結果の部分をクリックしてからTabキーを押すと、最初の2回は正しく機能しますが(次のセルに移動します)、最後は「ホーム」要素にフォーカスが移ります。クエリを非同期に変更すると、フォーカスはホームボタンに移動しません。

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

これはLinuxでは発生しませんが、Windows764ビットでのFirefox16.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 に答える