Расширение JS / Chrome - EventListener & Mutation не обнаруживает изменения - PullRequest
0 голосов
/ 02 мая 2019

Я создаю расширение для Chrome, и мне нужно вызвать функцию после обнаружения изменений на сайте. Предпочтительно, я хочу следить за изменениями, происходящими в <iframe>, но, поскольку я не могу заставить его работать, я уже рад запускать код всякий раз, когда обнаруживаются какие-либо изменения.

это код в моем файле inject.js:

// run script when site changes are detected
chrome.storage.local.get("obj", function (res) {
    console.log("setting page data object from listener:");
    console.log(res);

    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
        findKeyword();
        console.log("Listener onUpdate Executed");
    });

    chrome.tabs.onActivated.addListener(function(tabId, changeInfo, tab) {
        findKeyword();
        console.log("Listener onActivated Executed");
    });

    chrome.tabs.onCreated.addListener(function(tab) {         
       findKeyword();
       console.log("Listener onCreated Executed");

    });


    // iFrame Listeners    
    var iframe_id = res.obj.iframe_id;
    //var iframe = document.getElementById(res.obj.iframe_id);      // alternative

    $(iframe_id).find("body").on('mouseup', function(event) {
        findKeyword();
        console.log("iFrame Listener - MouseUp");
    });

    $('iframe#com.ihg.crm.web.hotel.Hotel').load(function() {
      findKeyword();
      alert("iFrame Listener - Load");
    });

    iframe_id.contentDocument.body.addEventListener('change', function() {
        findKeyword();
        console.log("iFrame Listener - body changes");
    });


    // MutationObservers
    var dom_observer = new MutationObserver(function(mutation) {
        findKeyword();
        console.log('Mutation observed');
    });

});  

Кроме того, недавно я получил ошибку Error handling response: TypeError: Cannot read property 'onUpdated' of undefined, что странно, поскольку я запускаю код из моего фонового скрипта, который AFAIK загружает только после загрузки всего контента.

Ценю любую помощь, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...