我在这里和其他网站上看了四五个例子,他们都给了我类似的方法,但它不起作用。
//清单
where
// content.js
{
"manifest_version": 2,
"name": "Screw My Ex",
"permissions": [
"https://www.facebook.com/*"
],
"description": "Replaces her name",
"version": "0.1",
"content_scripts": [
{
"matches": [
"https://www.facebook.com/*"
],
"js": [
"content.js"
],
"run_at": "document_end"
}
]
}
为了她的缘故,我删除了实际的名字,并将其替换为和。即使这样做也无效。根据每个地方,我检查这应该工作,但它没有,我不知道为什么。我主要是为了刷新JS并逐渐为自己做更多精心设计的扩展,但我现在对此非常沮丧。任何人都可以帮我这个吗?
答案 0 :(得分:1)
它不是不正确的,但这对于在facebook_end之后加载的内容不起作用,这是facebook上的大部分内容(它是动态加载的)。尝试替换你的名字,它应该工作。
我在我的扩展程序中尝试了它,它显示了预期的行为。
要更改动态加载的内容,您必须在每次加载内容后调用它。或者为了保持简单(但效率低下),您可以使用javascript setInterval定期调用替换。
参考:http://www.w3schools.com/jsref/met_win_setinterval.asp
编辑:
还有其他方法,但我首选的方法是使用变异观察者,
var obs = new MutationObserver(function(mutations, observer) {
for(var i=0; i<mutations.length; ++i) {
//dom mutation observed, do your replace here
for(var j=0; j<mutations[i].addedNodes.length; ++j) {
// every mutated dom node triggers
// this area so you can check for
// specific case when news feed etc are
// mutated to make it even more sleek
}
}
}
});
obs.observe( target, params);