Now browsing the archives for 4月, 2009.

openDialog の引数で指定したウィンドウ名を nsIWindowMediator で使用する

ルート要素に windowtype 属性がセットされていないウィンドウを、以下のように “test_window” という名前付きで開く。

window.openDialog("chrome://...", "test_window", "chrome,all");

引き続き nsIWindowMediator を使ってそのウィンドウの名前からウィンドウを取得しようとしても、できない。

var winMediator = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var win = winMediator.getMostRecentWindow("test_window");
// |win| is null

そこで、以下のようにウィンドウを開いた直後に window.name から取得したウィンドウ名を windowtype 属性へセットしてやる必要がある。

var win = window.openDialog("chrome://...", "test_window", "chrome,all");
win.document.documentElement.setAttribute("windowtype", win.name);

ただしモーダルダイアログを開く場合、ウィンドウを開く側ではなく、開かれたウィンドウ側で上記処理を行う必要がある。

TOP