>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как сделать свою about:page ? http://forum.mozilla-russia.org/viewtopic.php?id=43106 |
Innuend0 > 05-02-2010 21:37:48 |
У меня такой вопрос... Делаю расширения для работы.. для узкого круга людей.. И там есть у нас пару документов, которые должны быть под рукой... Доступа к хостингу у меня нет, и выкладывать на сервер рабочий я не могу... было бы очень удобно, если бы я где-то в расширении сохранил эти документы. и они был открывались по ссылке из расширения с таким красивым заголовком как допустим: about:reference и т.д. заранее спасибо. |
Unghost > 06-02-2010 14:33:54 |
Разбери расширение добавляющее свой about и делай по аналогии. |
Anton > 06-02-2010 15:38:04 |
Вот тут: https://developer.mozilla.org/en/Code_s … ol_handler есть пример реализации about:mystuff |
Innuend0 > 06-02-2010 18:00:08 |
Anton |
Infocatcher > 06-02-2010 18:26:01 |
Innuend0 |
Innuend0 > 06-02-2010 19:23:50 |
странно..я просто увидел в примере 2 функции... и думал их надо вызвать... как-бы инициализирвоать эту about:mystuff |
Infocatcher > 06-02-2010 19:47:08 |
Там автоматически вызывается функция NSGetModule.
|
Anton > 06-02-2010 22:43:00 |
Innuend0
Сохранить в .js файл и положить в папку components расширения. (c) Предварительно надо прописать в строку свежесгенерированный uuid (сгенерировать можно например здесь: http://www.somacon.com/p113.php) адрес своей страницы. |
Innuend0 > 07-02-2010 00:01:24 |
Infocatcher >> про адрес понятно. заметил. |
Anton > 07-02-2010 00:38:36 |
Лучше новый. |
Innuend0 > 07-02-2010 18:01:27 |
Не получается изменить код, чтоб 2-3 таких странички сделать... |
Infocatcher > 07-02-2010 20:20:49 |
Innuend0 пишет
Как-то так, наверное (вроде, 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") ]); } |
Innuend0 > 11-02-2010 17:18:40 |
при попытке открыть about:stuffA пишет: |