Показать страницу с расширением Firefox - PullRequest
1 голос
/ 02 мая 2011

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

Ответы [ 3 ]

0 голосов
/ 02 мая 2011

Вы можете найти некоторую информацию в 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

0 голосов
/ 04 мая 2011

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

0 голосов
/ 02 мая 2011

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

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, чтобы отфильтровать нужные вам страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...