我想将包含某个关键字的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消息之前,我的警报响起。我怎么等?
答案 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突变,每次将注释异步加载到页面中时,您都可以触发代码