Делаю расширение для Google Chrome, которое должно парсить запросы
В манифесте:
{"manifest_version": 2,
...
"devtools_page": "devtools.html",
...
}
Страница devtools:
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Devtools Page</title>
<script src="devtools.js"></script>
</head>
<body>
</body></html>
В devtools.js:
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
chrome.devtools.network.onRequestFinished.addListener(
function(request) {
if (request.request.url.indexOf("MyParam=")>0) {
chrome.devtools.inspectedWindow.eval(
'console.log("MyParam: " + unescape("' +
escape(getParameterByName("MyParam",request.request.url)) + '"))');
}
});
В консоль выводит нужный мне параметр.
НО ЭТО РАБОТАЕТ ТОЛЬКО ЕСЛИ ПРИ ЗАГРУЗКЕ ОТКРЫТЬ ПАНЕЛЬ DEVTOOLS (консоль, сеть итд)
Есть ли возможность сделать так в фоновом режиме, скрыто от пользователя, чтоб не открывать панель devtools каждый раз?
Как я и предполагал - не там искал)
Решение: В манифест:
...
"background": {
"scripts": ["background.js"]
},
...
В backround.js:
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if(details.url.indexOf("MyParam=")>0){
console.log("MyParam: "+getParameterByName("MyParam",details.url));
};
}, {urls: ["<all_urls>"]},[]);
Выводит в консоль фоновой страницы нужный параметр
Если нужно вывести в консоль активной вкладки - делаем через
chrome.tabs.query({active:true},function(tabs){
chrome.tabs.executeScript(tabs[0].id,{code:"console.log(...)"});
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Кто-нибудь сталкивался с проблемой - NVDA Screen Reader не читает aria-attributes, например такой как aria-labelledby ?