Gecko: nsIAlertsService, Linux и прочие OC

23rd May 2006 - 08:17

Для Fx под Windows работает такой код:

var image = "chrome://myExtension/skin/images/myExtension.png";
var title = "Test title", msg = "Test message";
try {
  Components.classes["@mozilla.org/alerts-service;1"]
    .getService(Components.interfaces.nsIAlertsService)
    .showAlertNotification(image, title, msg, false, "", null);
} catch(ex) {
  dump("alertsService failure: " + ex + "\n");
}

try/catch нужен потому, что под Linux (и Mac?) nsIAlertsService отсутствует.

С другой стороны, в Windows/Linux работает такой код:

var alertWin = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
               .getService(Components.interfaces.nsIWindowWatcher)
               .openWindow(null, "chrome://global/content/alerts/alert.xul",
               "_blank", "chrome,titlebar=no,popup=yes", null);
alertWin.arguments = [image, title, msg, false, ""];
alertWin.setTimeout(function(){alertWin.close()},10000);

setTimeout — для подстраховки, можно и не ставить, наверное.

Почему же в Linux отсутствует nsIAlertsService? Загадка.

Categories: dHtml | comments: (1)

Комментарии

1. Владимир Палант 21st June 2006 - 05:33

См. http://developer.mozilla.org/en/docs/nsIAlertsService — «In Mozilla 1.7, nsIAlertsService only worked under Windows.» Я так понимаю, под Linux у тебя как раз 1.7 стоит?

Mash:

Не-а.

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3, 2.6.8.1-12mdk, kde3.2.

Вызываю из JS-компоненты, в dump идёт "0x80570018 (NS_ERROR_XPC_BAD_IID) [nsIJSCID.getService]".

Комментарии временно отключены.