Страницы: 1
Спасибо большое за консоль. Нашел в коде компонента еще один баг, а именно неверный CONTRACTID - в конце была лишняя точка с запятой. Убрал ее, но это как-то не помогло. Скажите, Антон, а вот если компонент именно реализует интерфейс, а не создает что-то свое собственное, необходимо ли наличие xpt файла?
И еще один вопрос - я зарегистрировал обсервер на "http-on-examine-response". В принципе, мне этого наверное даже было бы достаточно для отлова моих торрентов, но есть один момент, который меня беспокоит. Дело в том, что при нажатии на линк функция observe вызывается от 10 до 30 раз. В этой функции я проверяю Content-Type того, что приехало и если это application/x-bittorrent, то говорю
cancel(Components.results.NS_ERROR_ABORT). Скажите, это нормальная ситуация, когда мы столько раз попадаем в observe с одного и того же линка и с одинми и теми же данными?
Спасибо, Антон, но не поможет. Все же мне не нужен protocol handler. Я эту информацию перечитал, но это не то, что мне надо. Все-таки мне надо обрабатывать не протокол x-bittorrent:bla-bla-bla, а ловить контент с Content-Type = application/x-bittorrent. Мой случай - это компонент, реализующий интерфейс nsIContentHandler, который регистрируется как "@mozilla.org\uriloader\content-handler;1?type=application/x-bittorrent". Но вот как его правильно зарегистрировать - хз... Да, реализацию этого компонента писал на JS.
Вот она:
[code]/* components defined in this file */
const BITTORRENT_CONTENT_HANDLER_CONTRACTID =
"@mozilla.org/uriloader/content-handler;1?type=application/x-bittorrent;";
const BITTORRENT_CONTENT_HANDLER_CID =
Components.ID("{2E37E494-D09F-48FC-81AA-D0B37E8B0EEB}");
/* components used in this file */
const SIMPLEURI_CONTRACTID =
"@mozilla.org/network/simple-uri;1";
/* interfaces used in this file */
const nsICategoryManager = Components.interfaces.nsICategory
Уважаемые, на вас вся надежда!
Пишу расширение, которое должно отлавливать данные с определенным Content-Type(application/x-bittorrent). Думал сначала написать Content-Handler компонент, но не нашел никакой путной информации по нему, точнее нашел что-то похожее в коде FF, написал, компонент регистрируется, но не работает... В общем, с Content-Handler я не разобрался, потому начал делать через nsIURIContentListener. Тут до опреленного момента все было хорошо - на onStartURIOpen я отлавливал прямые ссылки на торренты, в isPreffered попадало остальное с нужным contentType. На большинстве сайтов это работало хорошо, но к примеру на torrents.ru этот метод не прокатил - там получилась ситуация, когда на onStartURIOpen пришла непрямая ссылка, а в isPreffered, равно как и в другие методы моего листенера мы больше так и не попали - вместо этого отработали этот запрос по схеме unknownContentType, то есть открылось окошко с предложением выполнить файл, либо сохранить его... В принципе этого можн
…Нет, не нужен обработчик протокола. Видимо, я непонятно объяснил, что нужно.
Давайте так:
1. Идем, к примеру, на сайт torrentbox.com
2. выбираем любой торрент и нажимаем на кнопку с дискеткой (Download.torrent)
3. Видим диалог unknownContentType где нам предлагается либо открыть файл с помощью приложения, либо сохранить его.
Поскольку нам совершенно точно известно, что это за файл - его тип, предпочитаемое приложение и т.д., то хотелось бы просто именно для этого типа файла выводить не unknownContentType диалог, а свой собственный (данные пока обрабатывать вообще не надо - вообще хорошо бы отменить любые действия с файлом), для остальных же случаев пусть выводится стандартный диалог и производятся нужные действия. Проблема в чем - я не знаю и не могу найти, где именно (после каких событий) вызывается диалог unknownContentType, и как можно перекрыть его вывод. Добрался до nsHelperAppDlg.js и все - на этом мысль останавливается, поскольку в JavaScript я совсем не силен - занимаюсь им дня
Здравствуйте, уважаемые знатоки!
Встала передо мной такая вот задача: При клике на какой-либо линк, указывающий на файл, FF выдает нам диалог unknownContentType, где можно выбрать, что с этим файлом делать. Возможно ли сделать так, чтобы когда мы кликаем на линк, указывающий на файл определенного, известного нам типа (к примеру, torrent-файл) мы не выводили окно unknownContentType, а выводили какое-то свое окно? В остальных же случаях чтоб логика работала по умолчанию, то есть выводилось окно unknownContentType. Подскажите, пожалуйста, хотя бы направление, в котором надо смотреть. Я так подозреваю, что надо где-то еще до открытия окна отслеживать, чего мы там пытаемся открыть, но вот сколько я не рылся в коде, так и не нашел, где же выводится unknownContentType диалог...
Страницы: 1