Отображение пост-ответа (XMLHttpRequest) во всплывающем окне с расширением Chrome, кроме консоли Python - PullRequest
0 голосов
/ 02 января 2019

Я создаю расширение Chrome, которое отправляет пост-запрос с информацией о конкретном URL-адресе, который в данный момент просматривается пользователем на флешку (локальный хост), а затем выполняется некоторый просмотр веб-страниц по этому URL-адресу и на основе полученной информации назначается категория , После завершения этого процесса я бы хотел, чтобы во всплывающем окне отображалась назначенная категория, когда пользователь находится на ранее объявленных страницах (ofc без действий пользователя, например, при нажатии на значок расширения). В настоящее время я вижу, что это происходит на консоли Python, но я не могу увидеть это во всплывающем окне, которое выглядит пустым (я предполагаю, что это потому, что для выполнения сценария требуется около 1-3 секунд и требуется слушатель или какой-то тайм-аут чтобы достичь своей цели, однако я в настоящее время новичок в JS, и я не могу найти правильное решение). Когда я нажимаю «ок» во всплывающем окне, я вижу, что в background.js в инструментах разработчика есть информация, которую я ищу. Однако мне нужно иметь это во всплывающем окне. Как я могу это сделать? Я описал свою цель и действия, которые предпринимаются на изображении ниже - https://imgur.com/a/8Jknf1r

Код, который я использую (background.js) с stackoverflow в качестве примерной страницы, выглядит следующим образом:

function onCommit(info) {
const xhr = new XMLHttpRequest();
xhr.onload = () => {
console.log('onload %d:%d', info.tabId, info.frameId, info.url);
};
xhr.open('POST', 'http://localhost:5000/',true);
xhr.send(info.url);
// xhr.addEventListener("readystatechange", function () {
console.log(xhr.responseText);
alert(xhr.responseText);
}};

chrome.webNavigation.onCommitted.addListener(onCommit, {
url: [
{hostEquals: 'www.stackoverflow.com'},
{urlPrefix: 'https://stackoverflow.com/'},
{urlMatches: '^https://(www\\.)?stackoverflow.com/.*$'},
],
});

alert (xhr.responseText) в настоящий момент приводит к появлению пустого всплывающего окна - что нужно сделать, чтобы заполнить его ответом?

1 Ответ

0 голосов
/ 03 января 2019

Хорошо, я понял это, просто типичная ошибка новичка относительно синтаксиса возле слушателя;код, который работает:

function onCommit(info) {
const xhr = new XMLHttpRequest();
xhr.onload = () => {
console.log('onload %d:%d', info.tabId, info.frameId, info.url);
};
xhr.open('POST', 'http://localhost:5000/',true);
xhr.send(info.url);
xhr.addEventListener("readystatechange", function () {
console.log(xhr.responseText);
alert(xhr.responseText);
})
};
chrome.webNavigation.onCommitted.addListener(onCommit, {
url: [
{hostEquals: 'www.stackoverflow.com'},
{urlPrefix: 'https://stackoverflow.com/'},
{urlMatches: '^https://(www\\.)?stackoverflow.com/.*$'},
],
});

Одна странная для меня проблема заключается в том, что всплывающее окно теперь появляется 3 раза, сначала пустое, затем нажимает ОК, у меня есть ответ (что и ожидалось), а затем послепри повторном нажатии появляется снова - это конкретно или я могу это изменить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...