如何在加载Youtube评论或加载Messenger消息时运行Chrome扩展程序?

时间:2016-10-01 03:21:32

标签: javascript jquery google-chrome google-chrome-extension youtube

我想将包含某个关键字的youtube评论更改为其他内容,但为此,我必须检测其文本。我使用带有清单的Chrome扩展程序如下:

{
  "manifest_version": 2,
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/"
  ],
  "content_scripts": [{
    "css": ["styles.css"],
    "js": ["content.js"],
    "matches": ["https://*/*"],
    "run_at": "document_end"
  }]
}

和我的content.js文件是这样的:

alert("Starting");

然而,在加载Youtube评论或Messenger消息之前,我的警报响起。我怎么等?

1 个答案:

答案 0 :(得分:2)

YouTube评论和信使消息是异步加载的,content.js运行在document_end,即在执行这些调用之前。

  

在“document_end”的情况下,在DOM完成之后立即注入文件,但是在加载了图像和帧之类的子资源之前。

来自https://developer.chrome.com/extensions/content_scripts

你必须在YouTube上使用某种类型的监听器,可能是MutationObserver,这段代码应该有效:

// select the target node
var target = document.getElementById('watch-discussion');
// create an observer instance
var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
       console.log(mutation.type);
    });    
});

// configuration of the observer:
var config = { childList: true };

// pass in the target node, as well as the observer options
 observer.observe(target, config);

基于https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

通过监听注释包装器的childList突变,每次将注释异步加载到页面中时,您都可以触发代码