Javascript Chrome扩展中的MutationObserver脚本无法';我看不到变化
我正试图从一个带有chrome扩展的网站上抓取几行文本数据。我想检测并记录特定div类中的文本:Javascript Chrome扩展中的MutationObserver脚本无法';我看不到变化,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正试图从一个带有chrome扩展的网站上抓取几行文本数据。我想检测并记录特定div类中的文本: <div class="data-table"> <div class="item-value"> Some text here </div> <div class="item-value"> Target text </div> </div> 我尝试使用MutationObserver来捕获和记录更改。此脚本位于扩展
<div class="data-table">
<div class="item-value"> Some text here </div>
<div class="item-value"> Target text </div>
</div>
我尝试使用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还有其他选择,我很乐意接受。我无法复制它,尽管我将observer放在页面本身而不是扩展中。但我不确定这会有什么不同。在错误的上下文或URL中加载内容脚本是一个常见的错误。它必须在manifest.json中正确注册或通过chrome.tabs.executeScript注入。如果你做得正确,我想网站不会使用characterData修改,而是插入整个节点,这样你就可以尝试在
config
中使用childNodes:true
。我已经在问题中添加了清单文件。还添加了'config'中的'childNodes:true',它仍然不工作。
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);