Chrome扩展程序中的MutationObserver脚本无法捕获更改

时间:2018-10-05 21:14:47

标签: 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>

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之外还有其他选择,我很乐意接受。

0 个答案:

没有答案