Ответ 1
После просмотра, я обнаружил, что мне пришлось заменить вышеуказанный код следующим:
<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/>
Я создаю расширение Firefox..., что будет javascript, чтобы открыть URL-адрес на текущей вкладке из элемента меню?
например. в моем файле overlay.xul у меня есть следующая строка:
<menuitem label="Visit homepage" oncommand="window.location='http://www.somepage.com'"/>
но в firefox, когда я нажимаю на элемент меню, он открывает URL-адрес, но он закручивает весь макет браузера.
Каков правильный способ сделать это?
После просмотра, я обнаружил, что мне пришлось заменить вышеуказанный код следующим:
<menuitem label="Visit homepage" oncommand="content.wrappedJSObject.location='http://www.somepage.com'"/>
Из элемента меню вы можете использовать openUILinkIn. Он работает как:
openUILinkIn(url, where);
где могут быть: вкладка, текущий, окно (и несколько других редко используемых опций)
Если вы хотите вести себя по-другому на основе тех модификаторов клавиатуры, которые пользователь нажимает, вы можете использовать другую функцию whereToOpenLink, которая возвращает вкладку/текущее/окно на основе предпочтений и модификаторов пользователей.
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/" />
<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 в новой вкладке.
Вызовите эту функцию 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);
}