Открытие URL-адреса в текущей вкладке / окне из расширения Firefox - PullRequest
13 голосов
/ 23 ноября 2008

Я создаю расширение Firefox ... каким будет javascript для открытия URL-адреса в текущей вкладке из пункта меню?

например. в моем файле overlay.xul есть следующая строка:

<menuitem label="Visit homepage" oncommand="window.location='http://www.somepage.com'"/>

но в Firefox, когда я нажимаю на элемент меню, он открывает URL-адрес, но портит весь макет браузера.

Как правильно это сделать?

Ответы [ 4 ]

9 голосов
/ 23 ноября 2008

После просмотра я обнаружил, что мне пришлось заменить приведенный выше код следующим:

<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/>
8 голосов
/ 31 мая 2009

Из пункта меню вы можете использовать openUILinkIn . Это работает как:

openUILinkIn(url, where);

где может быть: вкладка, текущий, окно (и некоторые другие редко используемые параметры)

Если вы хотите вести себя по-разному в зависимости от того, какие клавиатурные модификаторы нажимает пользователь, вы можете использовать другую функцию whereToOpenLink , которая возвращает tab / current / window на основе пользовательских настроек и модификаторов.

openUILinkIn(url, whereToOpenLink(event));

Таким образом я использую:

<menuitem label="Visit homepage" 
          oncommand="openUILinkIn('http://example.com/', whereToOpenLink(event))"/>

Если вы не находитесь в контексте пункта меню, вы можете проверить другой встроенный XBL, который добавляет ссылки и открывающие HREF для метки:

<label value="google" class="text-link" href="http://google.com/" />
2 голосов
/ 29 декабря 2010
<menuitem label="Visit Report Site" oncommand="var win = Components.classes['@mozilla.org/appshell/window-mediator;1']
.getService(Components.interfaces.nsIWindowMediator)
.getMostRecentWindow('navigator:browser'); win.openUILinkIn('http://www.google.com', 'tab');"/>

Открыть URL в новой вкладке.

1 голос
/ 07 апреля 2009

Вызовите эти функции JS в вашей команде

//open a url current window:
function openUrl(url) {
content.wrappedJSObject.location = url;
newTabBrowser = gBrowser.selectedBrowser;
newTabBrowser.addEventListener("load", highlight, true);
}

//new tab
function openUrlNewTab(url) {
var win = Components.classes['@mozilla.org/appshell/window-mediator;1']
            .getService(Components.interfaces.nsIWindowMediator)
            .getMostRecentWindow('navigator:browser');
win.gBrowser.selectedTab = win.gBrowser.addTab(url);
}
...