Я делаю расширение Firefox, которое получает все URL-адреса запросов и отображает их. Но код работает, только если я вставлю его в консоль.
когда расширение загружается, оно не показывает никаких ошибок, кажется, что оно просто не запускается
вот полный код
xhrScript.js
(function(){
const proxiedOpen = XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function ( _, url) {
this.__URL = url;
return proxiedOpen.apply(this, arguments);
};
const proxiedSend = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function () {
const { protocol, host } = window.location;
// showing only when it paste in console
console.log("full request url ", `${protocol}//${host}${this.__URL}`);
return proxiedSend.apply(this, [].slice.call(arguments));
};
})();
// this works all times
document.body.style.border = "7px solid blue";
manifest.json
{
"manifest_version": 2,
"name": "XHR request urls",
"version": "1.0",
"description": "get all the request url's",
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["xhrScript.js"]
}
]
}
Как видите, в последней строке стоит document.body.style.border = "7px solid blue";
, это каждый раз работает нормально. Но методы XMLHttpRequest open
и send
не работают. работает только если я вставлю код в консоль.
если вы хотите увидеть пример, попробуйте скопировать и вставить код xhrScript.js
в https://reactjs.org (это SPA, так что легко проверить, что я хочу) в консоли devTools, и увидеть весь запрос.
Я не знаю, почему этот код запускается только тогда, когда он вставлен в консоль.