Расширение Chrome, флажки, которые были динамически добавлены на страницу? - PullRequest
0 голосов
/ 26 июня 2018

Я изо всех сил пытаюсь выяснить, как установить \ снять флажки с моим расширением chrome, которые не являются частью DOM, когда страница загружается.В моем примере, если я создаю простую страницу с установленными флажками, она прекрасно работает, я нажимаю кнопку в моем расширении Chrome, и флажки на странице обычно переключаются.

Теперь, если я перехожу на страницу, где находятся флажки, скажем, модальное диалоговое окно, в котором диалоговое окно загружается динамически при открытии, мое расширение не может установить \ снять флажки.

Здесьмои настройки.

У меня есть popup.html, popup.js & content.js.Когда вы нажимаете кнопку в моем popup.html, он использует среду обмена сообщениями для отправки сообщения в скрипт содержимого, который затем использует jQuery для проверки флажков.

Я провел некоторое исследование по использованию mutationObservers, но мне не кажется, чтозаставить его работать.Может кто-нибудь, пожалуйста, помогите мне понять, как справиться с этим.

Вот мой код, для скрипта контента, который я использую блок else if, чтобы установить флажки.

Любая помощь приветствуется.

popup.js

    function hello() {

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



  document.getElementById('checkAll').addEventListener('click', hello);

content.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
      if( request.message === "clicked_browser_action" ) {
        alert("background message:" + request.messgae);
        var firstHref = $("a[href^='http']").eq(0).attr("href");  
        console.log(firstHref);
        //Send this message to the background script
        chrome.runtime.sendMessage({"message": "open_new_tab", "url": firstHref});
      }
      else if( request.message === "CheckAll" ) {             
        $(':checkbox').each(function() {
          this.checked = true;                        
        });
      }
      else{
        //alert("nothing caught, here is the message:" + request.messgae);
      }
    }
  );
...