Страницы: 1
подскажите, как написать протокол, чтобы по адресу myprotocol:myscript запускался скрипт myscript.js из моего расширения?
для простого редиректа есть описания с примерами, например https://mike.kaply.com/2011/01/18/writi … l-handler/ или http://talkweb.eu/fosdem-protocol-for-m … sdemabout/
newChannel: function(aURI) { var ioservice = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); var uri = ioservice.newURI("http://google.com/", null, null); var channel = ioservice.newChannelFromURI(uri, null).QueryInterface(Ci.nsIHttpChannel); return channel; }
а как сделать, что запускался скрипт вместо редиректа?
спасибо за помощь.
Отсутствует
IVIAKC
Так в реализации newChannel() и запускать что нужно.
Еще можно в protocolFlags добавить URI_DOES_NOT_RETURN_DATA, тогда channel можно не создавать, будет пустая страница.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
можете подробнее написать, или поделиться примером?
так не работает
newChannel: function(aURI) { var ioservice = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); var channel = ioservice.newChannel("javascript:alert('hello');", null, null); return channel; }
Отсутствует
Смотря что надо скриптом делать. И надо ли выполнять разное или всегда одно и то же.
Можно перенаправить на свою внутреннюю страницу, из которой уже запускать скрипт.
А в простейшем случае можно прямо так что-нибудь сделать:
Components.utils.import("resource://gre/modules/Services.jsm"); var ph = Components.interfaces.nsIProtocolHandler; ... protocolFlags: ph.URI_NORELATIVE | ph.URI_NOAUTH | ph.URI_LOADABLE_BY_ANYONE | ph.URI_NON_PERSISTABLE | ph.URI_DOES_NOT_RETURN_DATA, ... newChannel: function(aURI) { var window = Services.wm.getMostRecentWindow(null); if(window) window.alert("Something"); return null; }
Вот два примера протоколов:
https://github.com/Infocatcher/Private_ … col.js#L61
https://github.com/Infocatcher/Handy_Cl … ent.js#L93
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Страницы: 1