我正在尝试制作一个chrome查找和替换扩展程序,但它不起作用

时间:2016-04-05 06:05:30

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

我在这里和其他网站上看了四五个例子,他们都给了我类似的方法,但它不起作用。

//清单

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并逐渐为自己做更多精心设计的扩展,但我现在对此非常沮丧。任何人都可以帮我这个吗?

1 个答案:

答案 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);
相关问题