0

Для нажатия кнопки на панели инструментов мне нужно получить адрес URL активной вкладки.Как получить активный URL-адрес вкладки в надстройке e10s

Но

window.gBrowser.selectedBrowser.contentDocument 

получает ошибку CPOW.

Как получить URL-адрес активного URL-адреса вкладки в дополнение к e10s?

+1

Что [вид расширения Firefox] (https://developer.mozilla.org/en-US/Add-ons) вы делаете ([WebExtensions] (HTTPS: //developer.mozilla.org/en-US/Add-ons/WebExtensions), [Add-on SDK] (https://developer.mozilla.org/en-US/Add-ons/SDK), [Bootstraped] (https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions) или [Overlay/XUL/Legacy] (https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions))? Пожалуйста, отредактируйте соответствующий тег в свой вопрос. Из вашего использования 'window.gBrowser', скорее всего, будет Bootstraped, или Overlay/XUL/Legacy. – Makyen

+0

Да, это Bootstraped, или Overlay/XUL/Legacy. Полагаю, я не могу добавить новые теги самостоятельно? –

+0

Вы всегда можете отредактировать свой вопрос, включая добавление или удаление тегов. Я добавил теги для bootstrapped/restartless и overlay. – Makyen

ответ

1

Глядя на объектах, доступных и в source code, похоже, где вы должны получить URI для активных вкладок является:

Из текущего nsIURI:

window.gBrowser.currentURI.spec 

объект window.gBrowser.currentURI возвращает nsIURI, который имеет ряд свойств, из которых вы можете получить URI, в том числе:

[nsIURI].spec //Returns a string representation of the URI. 
[nsIURI].asciiSpec //The URI spec with an ASCII compatible encoding. 
[nsIURI].specIgnoringRef //Returns a string representation of the URI without the ref 
         // (part after the #) portion. 

Вы также можете получить nsIURI для текущей выбранной вкладки, как:

window.gBrowser.selectedBrowser._documentURI 

От urlbar:
Вы могли бы, конечно, вытащить URL из urlbar:

window.document.getElementById('urlbar').value 

Нахождение window:
Все вышесказанное предполагает, что вы установили window соответственно в текущее активное окно. Например, делая что-то вроде:

// Add/remove a "/" to comment/un-comment the code appropriate for your add-on type. 
    /* Add-on SDK: 
    let window = require('sdk/window/utils').getMostRecentBrowserWindow(); 
    //*/ 
    //* Overlay and bootstrap (from almost any context/scope): 
    Components.utils.import("resource://gre/modules/Services.jsm"); //Services 
    let window=Services.wm.getMostRecentWindow("navigator:browser");   
    //*/ 
+0

Makyen, такое же дополнение, но теперь мне нужно вставить тег css в элемент заголовка активного документа с помощью кнопки панели инструментов. Возможно ли для e10s без скрипта контента? Или я должен задать новый вопрос? –

+0

@JohnBernard, новый вопрос. Тем не менее, вы верны в своем убеждении, что для этого потребуется какой-то контент-скрипт. Разделение активного документа из фоновых сценариев является одним из основных эффектов надстройки многопроцессорности (e10s). Для фонового процесса доступно только очень ограниченное количество информации (например, URL-адрес выше), без использования скрипта содержимого. – Makyen

+0

Большое спасибо @Makyen. Оценил. –

 Смежные вопросы

  • Нет связанных вопросов^_^