Мой скрипт
var origOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
this.addEventListener('load', function() {
//console.log(this.responseURL);
if(this.responseURL == "https://get.example.com/dashboard/summary")
{
// Run the function
funMain();
}
});
origOpen.apply(this, arguments);
};
function funMain() {
// My codes
}
Это мой скрипт, и он работает как положено. То, что это делает, это слушает XMLHttpRequests, и когда XMLHttpRequest сделан для 'https://get.example.com/dashboard/summary',, он вызывает funMain
функцию. Поскольку это событие, это не разовое событие. Это может случаться несколько раз. Этот запрос XMLHttpRequest создается веб-страницей https://example.com/dashboard.
Процесс: если запрос XMLHttpRequest сделан на 'https://get.example.com/dashboard/summary' с помощью https://example.com/dashboard веб-страницы, то вызовите функцию funMain
.
Итак, я хочу создать расширение, используя этот рабочий скрипт.
Это то, что я пробовал до сих пор ...
Сценарий содержимого
function funMain() {
// My codes
}
Примечание: я знаю, что должен использовать browser.runtime.sendMessage () для взаимодействия между фоновым скриптом и скриптом контента. Но на данный момент я пытаюсь заставить работать функцию события (в фоновом скрипте).
фоновый скрипт
console.log("Msg 01 - Background script is running.");
var origOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
this.addEventListener('load', function() {
console.log("Msg 02 - " + this.responseURL);
if(this.responseURL == "https://get.example.com/dashboard/summary")
{
// Run the function
// funMain();
console.log("Msg 03 - Hello! I am working as expected.");
}
});
origOpen.apply(this, arguments);
};
манифест
{
"manifest_version": 2,
"name": "Beastify",
"version": "1.0",
"description": "des",
"icons": {
"48": "icons/beasts-48.png"
},
"permissions": [
"webRequest",
"<all_urls>"
],
"content_scripts": [{
"matches": [
"*://*.example.com/dashboard"
],
"js": [
"content-script.js"
]
}],
"background": {
"scripts": ["background.js"]
}
}
Проблема в том, что событие не работает, как ожидалось. Следовательно, funMain не может быть вызван. Когда я проверяю фоновую страницу, я вижу только Msg 01. Я не вижу Msg 02 или Msg 03.
Вывод: background.js
Msg 01 - Background script is running.
Что я делаю неправильно и какможно это исправить?