Привет.
Есть трабл с передачей аргументов окну через nsIWindowWatcher.openWindow.
Пишем:

Выделить код

Код:

function openPage( url, element_url )
{
  var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                     .getService(Components.interfaces.nsIWindowWatcher);
  var argstring = Components.classes["@mozilla.org/supports-string;1"]
                          .createInstance(nsISupportsString);
  argstring.data = element_url;

  var paramArray = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
  paramArray.AppendElement( argstring );  
  var win = ww.openWindow(
    window,
    url,
    "_blank",
    "dialog=no,all",
     argstring );
// если здесь проверить win.arguments выставлен
}

Кто нють сталкивался с передачей аргументов окну из кода расширения?

Особенность поведения которую я заметил с openWindow: если последним аргументом стоит не null, то строка features (4 аргумент) ни как не влияет на внешний вид окна.

Версия FF 1.5.0.4.

Проверил и на FF 2.0 beta 1 - тот же эффект.

Т.е. пока вывод такой:
В nsIWindowWatcher.openWindow есть глюк с передачей аргументов: если последний параметр не null то инициализация окна происходи не полностью, и для него не вызывается событие создания окна (возможно и все остальные).



Спасибо.

Как-то при использовании столкнулся, но ломать голову не стал, а просто сделал

Выделить код

Код:

var win = ww.openWindow(null, "chrome://...", "_blank", "chrome,titlebar=no,popup=yes", null);
win.arguments = [arg1, arg2, ...];
Mash пишет

var win = ww.openWindow(null, "chrome://...", "_blank", "chrome,titlebar=no,popup=yes", null);
win.arguments = [arg1, arg2, ...];

Спасибо.
Такой способ я пробовал – такие окна появляются нормально, но вот в обработчиках создания и загрузки у них опять arguments == undefined.
Может дело не в параметрах вызова а в месте вызова, я вызываю из события загрузки другого окна, попробую перенести вызов openWindow в визуальный тред.

я такое делал для алертов (http://imfo.ru/archive/2006/05/23/nsialertsservice_linux), а там вызов prefillAlertInfo() идёт в конце xul. м.б. это и влияло; не знаю, смотреть надо, а времени нет.

Mash пишет

я такое делал для алертов (http://imfo.ru/archive/2006/05/23/nsialertsservice_linux), а там вызов prefillAlertInfo() идёт в конце xul. м.б. это и влияло; не знаю, смотреть надо, а времени нет.

Ага, спасиб.
А где эти параметры использовались?
В обработчикак alertWin они были доступны?

Посмотрите файлы в toolkit.jar\content\global\alerts. Там эти аргументы используются в prefillAlertInfo().