Показать локальную HTML-страницу с отдельным файлом JavaScript на вкладке - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть простое дополнение, которое добавляет кнопку на панель инструментов.

Я хочу, чтобы на этой панели инструментов была открыта вкладка, на которой показана локальная html-страница, которая использует javascript для получения некоторых URL-адресов, обработки данных, а затем отображает данные на экране на основе этих данных.Я хочу, чтобы это происходило на обычной вкладке браузера, а не в каком-либо окне расширения.

Я хочу, чтобы расширение было переносимым на нескольких платформах (с использованием html-файла и javascript), поэтому я просто хочу иметь вкладку с htmlстраница, которая обращается к файлу javascript в том же каталоге.

Я использую это на своей кнопке, которая открывает вкладку:

var win = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  .getInterface(Components.interfaces.nsIWebNavigation)
  .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
  .rootTreeItem
  .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  .getInterface(Components.interfaces.nsIDOMWindow);

var tab = win.gBrowser.addTab();
win.gBrowser.selectedTab = tab;

Что я должен добавить после этого, чтобы показать локальное упакованное расширение (Я понятия не имею, куда его упаковать) html-страница, которая будет обращаться к отдельному файлу javascript.

(это может быть очень простой вопрос, но документация mozilla - это гигантский беспорядок со старой информацией, которая не работает.)

1 Ответ

1 голос
/ 02 февраля 2012

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

var win = window;

То, что вы там написали, необходимо получить со страницы контента в окно браузера - обычно window.top не будет работать из-за границы безопасности между контентом и chrome. Но ваша кнопка уже есть в окне браузера.

Поскольку у вас уже есть кнопка - вы должны использовать наложение, означающее, что вы зарегистрировали пространство имен chrome://. Чтобы открыть свою страницу, вы можете использовать loadOneTab метод (это дает то преимущество, что вам не нужно явно выбирать вкладку):

window.gBrowser.loadOneTab("chrome://myextension/content/page.html", {inBackground: false});

Конечно, вы должны изменить myextension здесь, это должно быть ваше пространство имен chrome. page.html должен быть помещен в тот же каталог, где у вас есть оверлей (обычно chrome/content/). Вы можете просто использовать обычный тег script для загрузки файлов JavaScript, расположенных в том же каталоге:

<script type="text/javascript" src="script.js"></script>
...