Страницы: 1
Добрый день.
Возник вопрос. Как можно отменить стандартную загрузку браузера.
Есть код который перехватывает http ответ
var httpResponseObserver = { observe: function(subject, topic, data) { var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel); if(httpChannel.originalURI.host == "tfile.ru"){ alert(httpChannel.referrer); //alert(window.document.documentURI); alert(httpChannel.getResponseHeader("Content-Type")); } //alert(httpChannel.getResponseHeader("Content-Type")); } }; var observerService = Components.classes["@mozilla.org/observer-service;1"] .getService(Components.interfaces.nsIObserverService); observerService.addObserver(httpResponseObserver, "http-on-examine-response", false );
Хочу, чтоб при определенном «Content-Type» делались действия в моем экстеншене. А стандартные браузерные отменялись.
К примеру, когда тип Content-Type = application/binary чтоб вызывался мой загрузчик файлов а не стандартный браузера. С вызовом моих действий нет проблем, но вот как отменить действия браузера не нашел.
Конечно, можно перехватывать каждый запрос и делать предварительный запрос через xmlhttprequest смотреть Content-Type и принимать решение продолжать запрос или нет. Но думаю, пользователи экстеншена не буду рады тормазам в браузере.
Отсутствует
1. downloadManager.
2. nsIDownload.
3. nsICancelable.
Отсутствует
Проверяй URI регеспом на расширение. их не так много будет для файлов загрузки. если совпадает с exe или msi и тп, то делай
subject.cancel(Components.results.NS_BINDING_ABORTED);
Отсутствует
Страницы: 1