В расширении Chrome запущенный скрипт содержимого не может получить доступ к новому окну / вкладке - PullRequest
0 голосов
/ 12 апреля 2019

Я разрабатываю расширение для Chrome, которое извлекает список URL-адресов с главной веб-страницы, просматривает URL-адреса, отображает их в новом окне / вкладке и выбирает кнопки на новой странице.Я использую jQuery для очистки списка URL-адресов с главной страницы и кнопок на последующих страницах.Затем я перебираю URL-адреса по одному, ища элемент кнопки, чтобы я мог щелкнуть по нему.Страницы загружаются нормально, но запущенный скрипт контента не имеет доступа к новому активному окну / вкладке.Доступна только основная вкладка.Таким образом, запущенный скрипт контента не может найти кнопку, которую я хочу нажать.Расширение включает в себя popup.html, popup.js, content.js, background.js, background.html и manifest.json.Манифест включает разрешения для вкладок, activeTab и списка веб-адресов.Область сценария содержимого в манифесте содержит список URL-адресов, к которым он обращается.

При запуске popup.html исчезает, но скрипт содержимого запускается по URL-адресам, отображая каждый из них на новой вкладке, но кнопка поиска возвращается как «неопределенная», поэтому событие click завершается неудачно.Любые идеи о том, почему скрипт контента не имеет доступа к новой вкладке и возможные пути ее обхода.

Я исключил проблему с синхронизацией, потому что ждал загрузки страницы, и он так и не нашел кнопку.

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

// Фрагменты сценария содержимого:

// Фрагмент прослушивателя:

            if (msg.text === 'do_display') {
                editList();
                sendResponse({ count: 1, test_mode: 0 });
            }

// Редактировать фрагмент списка:

            function editList(){
            var links = $("div.item-listing").find("a");
            links.each((l) => console.log("href: " + links[l].href));
            var count = links.length;
            for (let i = 0; i < count; i++) {
                LinksArray[i] = links[i].href;
            }
            work();
            };

// Код рабочей функции:

            function work() {
                if (LinksArray.length === 0) return;
                var url = LinksArray.shift();
                console.log(url);
                openWindow = window.open(url); //WINDOWS OPEN FINE
                setTimeout(function () {
                    var edit = $("button.edit-listing");
                    console.log("get_edit: " + edit[0]); //FAILS TO FIND BUTTON  "UNDEFINED' 
                    getEdit();
                }, 3000);
                setTimeout(function () {
                    openWindow.close();
                    work();
                }, 30000);
            }

при запуске скрипта содержимого должна быть найдена кнопка, но она не работает.Скрипт, похоже, не ориентирован на новую вкладку.

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