Как отправить запрос POST из расширения Chrome (без нажатия) во Flask, когда браузер перезагружает страницу? - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу объединить нижеприведенные фрагменты, чтобы иметь возможность отправлять пост-запрос (содержащий URL-адрес) с расширения Chrome на флешку всякий раз, когда страница в Chrome загружается, не щелкая значок расширения ".Это возможно?Более того, я хотел бы, чтобы всплывающее окно отображалось только на определенных страницах, которые я объявляю (я думаю, что есть способ («совпадения») для этого в manifest.json, однако я не знаю, как это реализовать.)

chrome.tabs.query({
active: true,
lastFocusedWindow: true
}, function(tabs) {
var tab=tabs[0];
    console.log(tab.url);
var xhr = new XMLHttpRequest();
    xhr.addEventListener("readystatechange", function () {
    if (xhr.readyState == 4) {
        console.log(xhr.responseText);
        alert(xhr.responseText)
  }
});
    xhr.open("POST", "http://localhost:5000/",true);
    xhr.send(tab.url); 
});

Этот скрипт позволяет мне отправлять пост-запросы по клику, однако мне нужно сделать это без клика.Я нашел также такой скрипт, который отображает всю информацию об изменении содержимого браузера в правом нижнем углу:

 chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
 alert(changeInfo.url);
 console.log(changeInfo.url);

Я пытался объединить эти два, но безрезультатно.Я новичок в JS и Chrome Extensions, поэтому буду признателен за вашу помощь.

После достижения этой точки я хотел бы иметь возможность показывать всплывающее окно условно, это только когда конкретная страницабудет загружен, поэтому я буду признателен за ваши дальнейшие советы.

1 Ответ

0 голосов
/ 21 декабря 2018

Вы можете использовать chrome.webNavigation.onCommitted и указать список URL-адресов для мониторинга.
В приведенном ниже коде используется console.log, поэтому выходные данные отображаются в фоновой консоли .

manifest.json:

{
  "name": "test",
  "version": "0.0.1",
  "manifest_version": 2,
  "background": {
    "scripts": [
      "background.js"
    ],
    "persistent": false
  },
  "permissions": [
    "webNavigation",
    "http://localhost/"
  ]
}

background.js:

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

function onCommitted(info) {
  const xhr = new XMLHttpRequest();
  xhr.onload = () => {
    console.log('%d:%d', info.tabId, info.frameId, info.url, xhr.responseText);
  };
  xhr.open('POST', 'http://localhost:5000/');
  xhr.send(info.url);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...