#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_extension3. Мы здесь, чтобы помочь, но мы не бесплатная рабочая сила
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 для нее.