Chrome расширение. JS работает во всплывающем окне, а не в главном окне - PullRequest
0 голосов
/ 27 апреля 2020

Итак, у меня проблема. Я делаю расширение chrome, у меня есть всплывающее окно. html (окно с кредитами), контент. js, фон. js (работает при нажатии). Главная проблема в том, что когда я нажимаю на иконку расширения фона. js получаю, что нажимаю на нее и начинаю работать на всплывающей странице, а не на нужной мне странице. Я пытался сделать это во всплывающем окне. js, но то же самое, он работает на всплывающем. html странице, а не на главной странице. Как изменить код js? Основная часть контента. js:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if( request.message === "clicked_browser_action" ) {
        var name = window.location.href;
        subject = name.substr(name.indexOf("/",1)+2,name.indexOf("-",1)-name.indexOf("/",1)-2);
        exam = name.substr(name.indexOf("-",1)+1,name.indexOf(".",1)-name.indexOf("-",1)-1);
        myLoop();
    }
  }
);

фон. js:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    var activeTab = tabs[0];
    chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
  });
});

1 Ответ

0 голосов
/ 27 апреля 2020

Звучит так, как будто вы включаете контент. js во всплывающем окне. html. Это не верно. Сценарии содержимого предназначены для веб-страниц, но всплывающее окно browser_action (или page_action) является страницей расширения со своим собственным chrome-extension:// URL, DOM, окном document. В браузере Chrome вы можете проверить его, щелкнув правой кнопкой мыши внутри всплывающего окна, затем нажав «проверить». См. Также Как получить доступ к веб-странице DOM?

Решение:

  • удалить содержимое. js из всплывающего окна. html
  • написать отдельное всплывающее окно. js
  • , так как chrome .browserAction.onClicked не будет работать, если у вас есть всплывающее окно, вы также переместите его содержимое в всплывающее окно. js, поэтому он будет запускать каждый время показа всплывающего окна

всплывающее окно. html:

<script src=popup.js></script>

всплывающее окно. js:

// this will run every time the popup is shown
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  var activeTab = tabs[0];
  chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...