Задать вопрос

Не работает расширение chrome?

Всем привет. Пытаюсь сделать расширение для хрома:

манифест:
{
  "manifest_version": 3,
  "name": "My Extension",
  "version": "1.0",
  "permissions": [
    "activeTab", "scripting"
  ],
  "action": {
    "default_popup": "popup.html"
  }
}


Сам файл popup.js
document.getElementById("myButton").addEventListener("click", myFunction);
    function myFunction(){
       chrome.tabs.executeScript({code: 'document.querySelector("#APjFqb").value="123"'});
   }


И файл html для popup:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
  <title>HTML5</title>
  <!--[if IE]>
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
  <style>
   article, aside, details, figcaption, figure, footer,header,
   hgroup, menu, nav, section { display: block; }
  </style>
 </head>
 <body>
  <button id="myButton"> Show password</button>
<script src="popup.js"></script>
 </body>
</html>


На самом деле все просто, есть расширение для хрома, при нажатии расширения открывается окно (popup), там кнопка, при нажатии которой в активной вкладке добавляется текст в поля input. Читал про различные права доступа, читал про инъекции и прочее, ничего не работает. Как реализовать такое действие??? Или больше совсем никак???
  • Вопрос задан
  • 446 просмотров
Подписаться 3 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Попробуй такой манифест
{
  "manifest_version": 3,
  "name": "My Extension",
  "version": "1.0",
  "permissions": [
    "activeTab", "scripting"
  ],
  "action": {
    "default_popup": "popup.html"
  },
  "background": {
    "service_worker": "background.js"
  }
}
Такой popup.js
document.getElementById("myButton").addEventListener("click", myFunction);

function myFunction(){
    chrome.runtime.sendMessage({command: "runCode"});
}
И такой background.js
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  if (message.command === "runCode") {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.scripting.executeScript({
        target: {tabId: tabs[0].id},
        function: functionToInject
      });
    });
  }
});

function functionToInject() {
  document.querySelector("#APjFqb").value="123";
}
Ответ написан
Комментировать
@mkvmaks Автор вопроса
Ещё вижу вариант в popup выбирать нажатии кнопки заниматься значение в local storage, а другим плагином считывать и тогда нажимать на сайте
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы