Javascript 替换单词的Chrome扩展不';我不能在facebook上工作
我已经试着找出这个问题的答案大约一个小时了,但什么也找不到。我正在创建一个Chrome扩展,将“希拉里·克林顿”替换为“唐纳德·特朗普”,它可以在除Facebook之外的所有网站上使用。它适用于搜索时显示的人名,但不适用于任何帖子。我的代码:Javascript 替换单词的Chrome扩展不';我不能在facebook上工作,javascript,facebook,google-chrome,Javascript,Facebook,Google Chrome,我已经试着找出这个问题的答案大约一个小时了,但什么也找不到。我正在创建一个Chrome扩展,将“希拉里·克林顿”替换为“唐纳德·特朗普”,它可以在除Facebook之外的所有网站上使用。它适用于搜索时显示的人名,但不适用于任何帖子。我的代码: walk(document.body); function walk(node) { var child, next; switch ( node.nodeType ) { case 1: // Elem
walk(document.body);
function walk(node)
{
var child, next;
switch ( node.nodeType )
{
case 1: // Element
case 9: // Document
case 11: // Document fragment
child = node.firstChild;
while ( child )
{
next = child.nextSibling;
walk(child);
child = next;
}
break;
case 3: // Text node
handleText(node);
break;
}
}
function handleText(textNode)
{
var v = textNode.nodeValue;
var z = textNode.nodeValue.nodeValue;
v = v.replace(/\bHillary Clinton\b/gi, "Donald Trump");
textNode.nodeValue = v;
}
我的舱单:
{
"manifest_version": 2,
"name": "Hillary Trump",
"description": "CHANGE THIS!!!",
"version": "1.0",
"content_scripts": [
{
"matches": [
"*://*/*",
"https://*.facebook.com/*"
],
"js": [
"jquery.js",
"content2.js"
],
"run_at": "document_end"
}
],
"icons": { "16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png" },
"browser_action": {
"default_popup": "popup.html"
}
}
像这样使用变异观察者
function handleTextnode(textnode) {
textnode.nodeValue = textnode.nodeValue.replace(/Hillary Clinton/gi, "Donald Trump");
}
function walk(root) {
var handleChildren = function (node) {
[].filter.call(node.childNodes, function(child) {
return child.nodeType == 3;
}).forEach(handleTextnode);
}
handleChildren(root);
[].forEach.call(root.querySelectorAll('*'), handleChildren);
}
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type == "childList" && mutation.addedNodes.length) {
[].forEach.call(mutation.addedNodes, walk);
}
});
});
var options = {
childList: true,
subtree: true
};
observer.observe(document.body, options);
walk(document.body);
我创建了一个简单的更新,使其正常工作 您所需要做的就是将整个过程封装在一个setInterval中,如下所示:
window.setInterval(function(){
// ADD CODE HERE!!
}
可能在加载页面之前正在运行walk函数。facebook页面是非常动态的,你需要在你的code@JaromandaX,对不起,我是新来的,我该怎么做呢?使用@JaromandaX,所以我把代码放在:var observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){//CODE在这里也许,我还没有看到你的代码将如何与变异观察者一起使用,我只是建议变异观察者观察DOM的变异,这样你就可以在页面更改时运行你的代码,因为例如,当你向下滚动页面时,页面会在facebook中动态更改