Я создаю расширение для 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 загружает только после загрузки всего контента.
Ценю любую помощь, спасибо.