Я пытаюсь очистить несколько строк текстовых данных с веб-сайта с расширением Chrome.Я хотел бы обнаружить и зарегистрировать текст в определенном классе div:
<div class="data-table">
<div class="item-value"> Some text here </div>
<div class="item-value"> Target text </div>
</div>
manifest.json:
{
"name": "My Scraper",
"version": "0.1",
"manifest_version": 2,
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"browser_action": {
"default_icon": "icons/icon19.png"
},
"content_scripts": [{
"run_at": "document_start",
"matches": ["*://*.tradingview.com/*"],
"js": [
"lib/jquery-3.3.1.min.js",
"content.js"
]
}]
}
Я попытался MutationObserver, чтобы перехватывать и регистрировать изменения.Этот скрипт находится в content.js
файле с расширением:
setTimeout(function(){
var observables = document.querySelectorAll('.item-value');
console.log('Hello!');
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation);
alert('innerText Changed!')
});
});
var config = { characterData: true, subtree: true, childNodes: true };
observables.forEach(function(node) {
observer.observe(node, config);
});
}, 10000);
Сценарий выполняется через 10 секунд после загрузки страницы, чтобы убедиться, что целевой div загружен.В результате текст «Hello» может быть зарегистрирован, но после этого ничего не происходит.Что я делаю не так?
Div целевого текста часто обновляется, но innerText меняется раз в минуту.Мне нужно поймать изменение на innerText с очень низкой задержкой после этой минуты.Если есть какой-либо вариант, кроме MutationObserver, я с радостью приму его.