Как связать скрипт нажатия кнопки и скрипт работы с содержимым страницы в расширении Google Chrome

124
08 июня 2019, 18:40

Сделал расширение, при клике на его иконку всплывает pop-up с кнопкой при нажатии на которую, открываются все ссылки на странице с определенным классом. Проблема в том, что расширение не работает со страницей, то есть не открывает ссылки с неё, а открывает ссылки только внутри себя (с файла popup.html). Как сделать, чтобы при нажатии на кнопку с popup.html запускался скрипт работы с содержимым страницы?

Вот код скрипта:

    document.addEventListener('DOMContentLoaded', function() {
     let openScreensBtn = document.getElementById('btnScreens');
     openScreensBtn.addEventListener('click', function() {
      let links = document.querySelectorAll('.link');
      let arrLinks = Array.from(links);
      let arrHref = [];
      for (let i = 0; i < arrLinks.length; i++) {
        arrHref.push(arrLinks[i].getAttribute('href'));
      };
      for (let i = 0; i < arrHref.length; i++) {
        window.open(arrHref[i], '_blank');
      };
    });
  });

Вот код popup.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Index</title>
  <script src="popup.js"></script>
</head>
<body>
  <button id="btnScreens">Open Screens</button>
</body>
</html>

manifest.json

{
    "name": "Ext",
    "description" : "",
    "version": "1.0",
    "manifest_version": 2,
    "browser_action": {
        "default_icon": "128.png",
        "default_popup": "popup.html"
    },
    "permissions": [
        "activeTab"
    ]
}
Answer 1

Воспользуйтесь методом chrome.tabs.create:

chrome.tabs.create({url: arrHref[i]});

При этом в permission (manifest.json) необходимо добавить разрешение на tabs.

READ ALSO
Ошибка 500 при выполнении запроса /wd/hub/sessions к docker-selenium

Ошибка 500 при выполнении запроса /wd/hub/sessions к docker-selenium

Запускаем Selenium-сервер (elgalu/docker-selenium):

103
Не работает ajax запрос Asp.net MVC

Не работает ajax запрос Asp.net MVC

Есть контроллер с методом

119
Как остановить таймер в данном случае node js

Как остановить таймер в данном случае node js

есть функция которая запускает таймер на сервере node js

148
Как ускорить загрузку страницы, если на ней много аудио файлов на 250 мб?

Как ускорить загрузку страницы, если на ней много аудио файлов на 250 мб?

Я новичок в сайтостроительстве и недавно таки выложил свой первый сайтНо сразу возникла проблема с прогрузкой аудио

97