Отобразить страницу с расширением Firefox

#javascript #html #firefox #firefox-addon

#javascript #HTML #firefox #firefox-дополнение

Вопрос:

Может кто-нибудь, пожалуйста, сказать мне, как написать расширение Firefox, которое отображает локальную HTML-страницу (содержащуюся в расширении), когда пользователь открывает новую вкладку или веб-страницу.

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

1. Где вы хотите, чтобы отображалась эта страница?

2. @Neil На пустой странице браузера (когда пользователь открывает новую вкладку).

Ответ №1:

Вам понадобится эта функция для чтения файла внутри вашего дополнения

 function Read(file)
{
    var ioService=Components.classes["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService);
    var scriptableStream=Components
        .classes["@mozilla.org/scriptableinputstream;1"]
        .getService(Components.interfaces.nsIScriptableInputStream);

    var channel=ioService.newChannel(file,null,null);
    var input=channel.open();
    scriptableStream.init(input);
    var str=scriptableStream.read(input.available());
    scriptableStream.close();
    input.close();
    return str;
}
  

Затем создайте элемент и добавьте содержимое HTML.

 gBrowser.addEventListener("DOMContentLoaded", function(e) {
    var documentElement = e.originalTarget.defaultView.document;
    var div = documentElement.createElement("div");
    div.innerHTML = Read("chrome://extensioname/content/file.html");
    documentElement.body.appendChild(div);
});
  

Используйте e.originalTarget.defaultView.location.href для фильтрации страниц, которые вы хотите, чтобы это поведение.

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

1. Спасибо за ваш ответ, но я действительно новичок в дополнениях Firefox и, читая их руководство весь день, я не знаю, что поместить в Chrome manifest, install.rdf и т.д. Не могли бы вы, пожалуйста, опубликовать весь код или отправить мне код на мою электронную почту (bruno.da_silva@voila.fr )

2. @Bruno Я не могу прямо сейчас. Попробуйте посмотреть на Hello World расширение mozilla.doslash.org/stuff/helloworld.zip доступно по адресуdeveloper.mozilla.org/en/building_an_extension

3. Мы здесь, чтобы помочь, но мы не бесплатная рабочая сила

4. @Iwburk Когда я запрашивал код, я не запрашивал весь код. Я имел в виду пример кода, показывающий, как написать расширение (со своей иерархией), которое изменяет значение пустого окна по умолчанию (потому что в официальных руководствах говорится только о Chrome, который работает только для меню)

Ответ №2:

Вы можете найти некоторую информацию на https://developer.mozilla.org/en/Observer_Notifications и https://developer.mozilla.org/en/Code_snippets/Progress_Listeners и https://developer.mozilla.org/En/Code_snippets/On_page_load .

Для отображения содержимого HTML внутри содержимого XUL (хотя вы также можете вызвать открытие диалогового окна чистого XHTML), вы можете использовать XUL iframe

Ответ №3:

Если вы переопределите BrowserOpenTab функцию, вы можете заставить ее открывать страницу по вашему выбору, а не about:blank . Это может быть страница, предоставляемая вашим расширением; в идеале вы должны реализовать альтернативный URI для нее.