У меня такой вопрос... Делаю расширения для работы.. для узкого круга людей.. И там есть у нас пару документов, которые должны быть под рукой... Доступа к хостингу у меня нет, и выкладывать на сервер рабочий я не могу... было бы очень удобно, если бы я где-то в расширении сохранил эти документы. и они был открывались по ссылке из расширения с таким красивым заголовком как допустим: about:reference и т.д.


заранее спасибо.

Разбери расширение добавляющее свой about и делай по аналогии.

Вот тут: https://developer.mozilla.org/en/Code_s … ol_handler есть пример реализации about:mystuff

Anton
Не подскажите, как этот пример внедрить? там просто сами функции? А где и как их надо вызвать?

Innuend0
Сохранить в .js файл и положить в папку components расширения.

странно..я просто увидел в примере 2 функции... и думал их надо вызвать... как-бы инициализирвоать эту about:mystuff

Там автоматически вызывается функция NSGetModule.
https://developer.mozilla.org/en/How_to … Javascript

When the application registers the component, this function
is called.

Innuend0

Не подскажите, как этот пример внедрить? там просто сами функции? А где и как их надо вызвать?

Сохранить в .js файл и положить в папку components расширения. (c)

Предварительно надо прописать в строку

Выделить код

Код:

classID: Components.ID("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),

свежесгенерированный uuid (сгенерировать можно например здесь: http://www.somacon.com/p113.php)
и указать в строке

Выделить код

Код:

var channel = ios.newChannel("chrome://mystuff/content/mystuff.xul", null, null);

адрес своей страницы.

Infocatcher
Спасибо, ясно.
Anton
Cпасибо

>> про адрес понятно. заметил.
А UUID можно новый, или тот же, что и в моём расширении?

А UUID можно новый, или тот же, что и в моём расширении?

Лучше новый.

Не получается изменить код, чтоб 2-3 таких странички сделать...

Innuend0 пишет

Не получается изменить код, чтоб 2-3 таких странички сделать...

Как-то так, наверное (вроде, XPCOMUtils.jsm такое позволяет):

Выделить код

Код:

function MyAboutHandler(pathPart, desc, cid) {
    this.pathPart = pathPart;
    this.classDescription = desc;
    this.classID = Components.ID(cid);
    this.contractID = "@mozilla.org/network/protocol/about;1?what=" + pathPart;
}

MyAboutHandler.prototype = {
    newChannel : function(aURI) {
        if(aURI.spec != "about:" + this.pathPart)
            return null;
        var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
        var channel = ios.newChannel("chrome://myextension/content/" + this.pathPart + ".xul", null, null);
        channel.originalURI = aURI;
        return channel;
    },
    getURIFlags: function(aURI) {
        return Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT;
    },

    QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule])
};

function NSGetModule(aCompMgr, aFileSpec) {
    return XPCOMUtils.generateModule([
        new MyAboutHandler("xxx", "About xxx Page", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
        new MyAboutHandler("yyy", "About yyy Page", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"),
        new MyAboutHandler("zzz", "About zzz Page", "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz")
    ]);
}

при попытке открыть about:stuffA пишет:
The URL is not valid and cannot be loaded.