Я изо всех сил пытаюсь выяснить, как установить \ снять флажки с моим расширением 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);
}
}
);