Я пишу расширение Chrome, которое должно при загрузке каждого нового домена в браузере получать специальный удаленный URL, добавлять к нему текущий домен (как с window.location.hostname
), получать специальные метри c из целевую страницу, созданную таким образом (с XMLHttpRequest
и XPath
), и показывать этот показатель c как BadgeText
.
У меня почти все работает, но только со стати c URL Если вместо "+window.location.hostname+"
я жестко закодирую любое доменное имя, все работает так, как ожидалось - я получаю число как BadgeText
. Но как я могу получить эту работу с доменом, загруженным в данный момент в браузере?
Это мой background.js
:
chrome.tabs.onUpdated.addListener(function (tabid, changeInfo, tab) {
chrome.tabs.query({ 'active': true, 'currentWindow': true }, function (tabs) {
let newUrl = new URL(tabs[0].url);
currentDomain = newUrl.hostname;
console.log(currentDomain);
});
});
var xhr = new XMLHttpRequest();
xhr.open("GET", "url part 1" + window.location.hostname + "url part 2", true);
xhr.responseType = 'document';
xhr.send();
xhr.onreadystatechange = function () {
console.log("XHR callback readyState = " + this.readyState);
if (this.readyState == 4) {
function getElementByXpath(path) {
return xhr.response.evaluate(path, xhr.response, null, XPathResult.STRING_TYPE, null).stringValue;
}
console.log(getElementByXpath("//div[@class='data-mini']/span/span[@class='value']/text()"));
var badgeText = getElementByXpath("//div[@class='data-mini']/span/span[@class='value']/text()");
console.log(badgeText);
chrome.browserAction.setBadgeText({ text: String(badgeText) });
console.log(String(badgeText));
}
}
С первой частью я получаю чистый домен загруженной в данный момент вкладки в приставка. Вторая часть должна выполнить остальную работу.
То, что остается , это получить
currentDomain
в
xhr.open("GET", "https://app.sistrix.com/app_visindex/__loadModule/lang/de/domain/"+currentDomain+"/source/de/ref/app_controller_efcdc3b3cab713326d8830ac95b499e454ae4e46053a5cc6/_action/_result/_cache//_loadbox/empty/_ajax/1/_module-expire/217287/_controller", true);
Основная цель:
- при посещении любого другого домена URL в
xhr.open
изменяется с текущим доменом, XHRHttpRequest
получает новый номер из HTML элемента, определенного с XPath
, - номер отображается как
BadgeText
.