Я хочу изучить http-запросы в расширении для firefox. Для начала выяснить, как сделать то, что я хочу сделать, я решил просто войти все и посмотреть, что идет вверх:firefox addon webrequest.addListener misbehaving
webRequest.onResponseStarted.addListener(
(stuff) => {console.log(stuff);},
{urls: [/^.*$/]}
);
Домен является незначительным, и я знаю, что регулярное выражение работает, проверено на консоли. При запуске этого кода я не регистрирую журнал. Когда я вынимаю параметр фильтра я получаю каждый запрос:
webRequest.onResponseStarted.addListener(
(stuff) => {console.log(stuff);}
);
Прохладный, я, вероятно, делать что-то неправильно, но я не могу видеть, что.
Другой подход заключается вручную фильтровать по себе:
var webRequest = Components.utils.import("resource://gre/modules/WebRequest.jsm", {});
var makeRequest = function(type) {
webRequest[type].addListener(
(stuff) => {
console.log(!stuff.url.match(/google.com.*/));
if(!stuff.url.match(/google.com.*/))
return;
console.log(type);
console.log(stuff);
}
);
}
makeRequest("onBeforeRequest");
makeRequest("onBeforeSentHeaders");
makeRequest("onSendHeaders");
makeRequest("onHeadersReceived");
makeRequest("onResponseStarted");
makeRequest("onCompleted");
С console.log над если я могу видеть регулярное выражение возвращает истину, когда я хочу, чтобы и код, что делает его мимо, если , Когда я удаляю console.log выше, если if, если больше не выполняется.
Мой вопрос в том, как мне заставить параметр фильтрации работать, или если это действительно сломано, как я могу получить код мимо if, который должен быть выполнен? Очевидно, что это пожарный шланг, и чтобы начать поиск решения, мне нужно будет уменьшить данные.
Благодаря
Из документации по адресу https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/WebRequest.jsm#onBeforeRequest. Это указывает, что URL-адреса являются «массивом RegExp». Это довольно ясно. В любом случае я попробовал ваши шаблоны совпадений из Google, не повезло. Похоже, что регистрация до того, как я это сделаю, позволяет регистрироваться внутри запроса, я просто не знаю, действительно ли это делает то, что я хочу. – Dale