0

フォームで Infragistics グリッドを使用しており、セルで複数のクライアント側イベントを処理しています (セル クリック、セル編集前、セル更新前など)。

セル クリック イベントで、次のようにセカンダリ ウィンドウを (正常に) 生成しています。

var convChartWindow = window.open("conversioncharts/" + currentCell.getValue() + ".html", "chart", "location=0,0, status=1, scrollbars=1, width=" + screen.width + ", height=175");        
convChartWindow.focus();

ただし、convChartWindowはフォーカスを維持せず、親ウィンドウに覆われます。この後、他のセル イベントは発生しませんが、いくつかの Infragistics JavaScript が実行されているようです。

.focus()JavaScript がさらに実行されないようにして、正しいウィンドウに焦点を合わせ続けるために、上記の後に置くことができるものはありますか?

4

4 に答える 4

4

これを呼んでください:

// Prevents event bubble up or any usage after this is called.
// pE - event object
function StopEvent(pE)
{
   if (!pE)
     if (window.event)
       pE = window.event;
     else
       return;
  if (pE.cancelBubble != null)
     pE.cancelBubble = true;
  if (pE.stopPropagation)
     pE.stopPropagation();
  if (pE.preventDefault)
     pE.preventDefault();
  if (window.event)
     pE.returnValue = false;
  if (pE.cancel != null)
     pE.cancel = true;
}  // StopEvent

これはここから抜粋されました:Firefoxの「event.returnValue=false」に相当するもの

PeterBlumによって書かれました。PeterBlum.com
を参照してください。

于 2009-02-12T20:38:14.587 に答える
0

指定したコードを実行する関数に何か他のものがある場合は、次を使用してみてください。

break;

後:

convChartWindow.focus();
于 2009-02-12T20:18:18.253 に答える
0

私はインフラジスティックスが何であるかを知りません。あなたが制御できない何らかのフレームワークを想定していません。私があなただったら、次のことを試します:

1) タイムアウトを設定して 1000 ミリ秒後にフォーカスをウィンドウに戻すか、タイムアウト ループを設定して必要なウィンドウにフォーカスを設定します。これはハックです。

2)あなたの人生を台無しにするイベントを発生させる関数を見つけ、コードでそれらの関数をオーバーライドし、それらが何か悪いことをするのを防ぐフラグを追加します

3) 最後に、少なくともこれを読んでください: http://www.quirksmode.org/js/events_order.html そこに何か役に立つものがあるかもしれません

于 2009-02-12T20:10:44.670 に答える
0

子ウィンドウが開いたときにフォーカス自体を呼び出すようにします。

于 2009-02-12T20:11:15.447 に答える