Chrome扩展程序会不定期地更改字词

时间:2017-06-25 19:26:22

标签: javascript html google-chrome-extension manifest

我尝试制作一个扩展程序,找到所有单词“找到”并将其替换为“found”仅用于测试。它有时会改变1/2的单词,有时是全部,有时也不会。

像这样:

http://i.imgur.com/H7H7X0r.png

在网站上按下新日期后:

http://i.imgur.com/WXRz7ch.png

我认为这是因为网站更新或加载了该单词的新“实例”。有没有办法让脚本像每一秒一样更新?再次替换这个词。

清单:

{
"manifest_version": 2,
    "name": "title",
    "description": "description",
    "version": "4.0",
    "content_scripts": [
        {
            "matches": [
                "*://*/*"
            ],
            "js": [
                "content.js"
            ],
            "run_at": "document_idle"
        }
    ]
}

content.js

var elements = document.getElementsByTagName('*');

for (var i = 0; i < elements.length; i++) {
    var element = elements[i];

    for (var j = 0; j < element.childNodes.length; j++) {
        var node = element.childNodes[j];

        if (node.nodeType === 3) {

            var text = node.nodeValue;
            var replacedText = text.replace(/Turkiet/g, 'found');

            if (replacedText !== text) {
                element.replaceChild(document.createTextNode(replacedText), node);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

是的,只需将代码输入函数然后使用setInterval():

function replaceWord(){
  var elements = document.getElementsByTagName('*');

  for (var i = 0; i < elements.length; i++) {
    var element = elements[i];

  for (var j = 0; j < element.childNodes.length; j++) {
    var node = element.childNodes[j];

    if (node.nodeType === 3) {

        var text = node.nodeValue;
        var replacedText = text.replace(/Turkiet/g, 'found');

        if (replacedText !== text) {
            element.replaceChild(document.createTextNode(replacedText), 
            node);
        }
    }
 }
 }
}

//Calls replaceWord() every second
setInterval(replaceWord,1000);