PDA

View Full Version : Ext.Window内のGridPanelからウィンドウを開いた時の動作について



matsuoka
6 Sep 2009, 5:21 AM
お世話になります。

Ext.Window内のGridPanelから新規ウィンドウを開いた時の動作について、ご質問します。

Ext.Window内にGridPanelを表示し、そのGridPanelは"enableDragDrop=true"となっています。
このとき、GridPanelのセルに表示されているリンクから新規ウィンドウを開いた場合、
そのウィンドウが非アクティブになり、Ext.Windowを開いているウィンドウがアクティブに
なる現象が起きているのですが、これを回避する方法はありますでしょうか?
期待する動作としては、新規ウィンドウがアクティブのままという動作を期待しています。

環境は以下の通りです。
OS:WindowsXP
ブラウザ:IE6
ExtJSのバージョン:2.2.1

要件として、Ext.Windowからのドラッグ&ドロップというのが必須なので
"enableDragDrop=true"のままで上記現象を回避したいのですが。。。

サンプルのURLとサンプルソースです。
・"enableDragDrop=true"の場合
http://www.ispern.com/wp-content/ExtJSSample/WindowSample/index1.html
・"enableDragDrop=false"の場合
http://www.ispern.com/wp-content/ExtJSSample/WindowSample/index2.html

mashiki
11 Nov 2009, 8:25 AM
亀れすですが、
1つの例として、IE7のうちの環境では下記で回避できました。

これでうまくいくなら、グリッド表示はaタグを使わず表示のみとし、
グリッドのクリックイベントを拾って、DelayedTaskでwindowを
開くようにすればきれいにできそうな気がします。

diff WindowSample1x.js WindowSample1.js
33c33
< var template = new Ext.Template('<a href="{link}" target="_blank">{link}</a>');
---
> var template = new Ext.Template("<a href='#' onclick='winopen(\"{link}\");return false;' >{link}</a>");
34a35
>
100a102,107
>
> var winopen_link;
> function winopen(link) {
> winopen_link=link;
> setTimeout("window.open(winopen_link)",200);
> }

matsuoka
18 Jan 2010, 7:18 AM
レスありがとうございます。

mashikiさんの方法で、IE6、7の両ブラウザで回避させることができました。
納期が迫っていたので、今回はこの方法で対応しました。。。

確かに、DelayedTaskを使用した方がきれいですね。
今度試してみます。

報告が遅くなってしまい、すみませんでした。

非常に助かりました。
ありがとうございました!!