Как мне запустить веб-страницу из приложения XUL в XULRunner?

#javascript #xul #xpcom #xulrunner

#javascript #xul #xpcom #xulrunner

Вопрос:

Каков эквивалент следующего обработчика кнопок в XULRunner?

 function launch_page() {
    var win = Components.classes['@mozilla.org/appshell/window-mediator;1']
        .getService(Components.interfaces.nsIWindowMediator)
        .getMostRecentWindow('navigator:browser');
    win.openUILinkIn('http://www.google.com', 'window');
}
  

Это ничего не делает в моем приложении XUL, которое установлено в Program Files с помощью XULRunner —install-app ./foo.xpi.

Есть ли какой-либо способ для моего приложения XUL запустить браузер пользователя по умолчанию для отображения веб-страницы при нажатии кнопки?

Ответ №1:

Это пока работает:

 // first construct an nsIURI object using the ioservice
var ioservice = Components.classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService);

var uriToOpen = ioservice.newURI("http://www.google.com/", null, null);

var extps = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
    .getService(Components.interfaces.nsIExternalProtocolService);

// now, open it!
extps.loadURI(uriToOpen, null);
  

У кого-нибудь есть более стандартный способ?

Комментарии:

1. Я бы сказал, что это правильный код для приложения XUL без браузера. Все становится сложнее, когда вы пишете расширение, которое хотите иметь возможность устанавливать как в браузерных, так и в не-браузерных приложениях XUL.