Javascript 替换单词的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

我已经试着找出这个问题的答案大约一个小时了,但什么也找不到。我正在创建一个Chrome扩展,将“希拉里·克林顿”替换为“唐纳德·特朗普”,它可以在除Facebook之外的所有网站上使用。它适用于搜索时显示的人名,但不适用于任何帖子。我的代码:

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中动态更改