Расширение Chrome - внедрение скрипта и запуск его на неактивной вкладке - PullRequest
0 голосов
/ 21 октября 2019

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

Упрощенная версия моего кода:

manifest.json

{
  "name": "name",
  "version": "0.0.1",
  "manifest_version": 2,
  "description": "Doing stuff",
  "background": {
    "scripts": [
      "background.js"
    ],
    "persistent": true
  },
  "browser_action": {
    "default_title": "Bot"
  },
  "permissions": [
    "https://*.url.com/*",
    "*://*/*",
    "tabs"
  ]
}

background.js:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {


    if(changeInfo.status == 'complete') {

        try {
            chrome.tabs.executeScript(tab.ib, {
                file: 'inject.js'
            });

        } catch(err) {
            console.log(" extension cannot run on the chrome:// page ")
        }
    } 

})

inject.js:

(function() {

    function page1() {

        links = document.querySelectorAll("a.link_class");
        for(var link in links) {
            link.setAttribute("target", "_blank");
            link.click();
        }
    }

    function page2() {
        // this does not run in tabs that are inactive
        // in order to make it run, i have to click in the inactive tab and reload it manually
        document.querySelector("input[name='field_to_update']").text = "setting the field value";
        button = document.querySelector("input[name='button']");
        button.click();
    }

    if(document.querySelector("div.page1") != null) {
        page1();
    } else {
        page2();
    }
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...