2

Websphere Portal Server で実行されている Spring アプリケーションで Dojo ツールキット 1.4.3 (他のバージョンは使用できません) を使用すると、IE8 でのイベントに問題が生じます (ひどい!)。

IE8 のタブ移動の問題は既知であるため、バックエンドがこれと関係があるとは考えていません。

Webページの任意のフィールドを押してタブを押し続けると、フォーカスがURL入力とボタンに戻り、それを繰り返した後にドキュメントに戻りません。Webサイトの要素をクリックすると、再追加されますその要素にフォーカスを移動しますが、タブをもう一度押すと、ブラウザーの上部に戻ります。

今、私の問題は、タブをずっと押してドキュメントからフォーカスを外した後に発生します。ブラウザーが DOM からイベントを削除しているように見えます。IE8 でコードをデバッグしましたが、コールバック関数をトリガーしていないようですが、タブ全体を実行していないときは正常に動作します。

私はdojo.disconnect()イベントを使用して再追加しようとしましたが、その後dojo.connect()無駄に呼び出されました。ここに小さなスニペットがあります:

var connectedObjects = {};
dojo.query(".someClass").forEach(function(inputField){
   connectedObjects[inputField.id] = {}; 
   connectedObjects[inputField.id].onfocus = dojo.connect(inputField, "onfocus", function(event){
       if(connectedObjects[inputField.id]){
           dojo.disconnect(connectedObjects[inputField.id].onkeyup);
           connectedObjects[inputField.id].onkeyup = dojo.connect(inputField, "onkeyup", someCallbackFunction);
       }
   })
});

これを解決する方法について誰かアイデアがありますか?

4

1 に答える 1

0

したがって、これは奇妙なものですが、問題を修正する簡単な方法があります。これにより、他のブラウザが css プロパティを持つ非表示の入力フィールドを循環することも修正されるようdisplay:noneです。コードに続きます。

dojo.query("*").forEach(function(fieldID){
    dojo.attr(fieldID, "tabIndex", "-1");
});
于 2012-07-25T09:51:31.910 に答える