使用Chrome扩展程序查找并替换Google Search div的innerHTML

时间:2016-05-06 03:19:54

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

我正在尝试构建一个Chrome扩展程序,用于扫描一些Google搜索结果,如果div的原始innerHTML包含特定的单词或短语,则用字符串替换div的innerHTML(或innerText)。

每当我尝试使用类“g”获取div并尝试使用该值来检查innerHTML以及与replaceDivs函数中的div相关联的其他属性时,我总是发现变量“divs”为空。在阅读其他Stackoverflow帖子后,我发现我必须添加一个事件监听器,我在文档就绪函数中做了。但是,尽管添加了一个事件监听器来查找插入的节点,我仍然发现我的代码中的“divs”变量不包含任何内容。

在调试content.js文件时,我发现“divs”变量在整个页面加载之前都是空的,所以我尝试在manifest.json文件中使用“run_at”:“document_end”。但是这也没有解决问题,因为在调试时“divs”变量仍然是空的。

我收到了这样的消息: enter image description here

我的content.js文件:

//Replaces divs inner text with a message if a particular substring is found. 
function replaceDivs() {
    var divs = document.getElementsByClassName("g");
    console.log(divs);
    for (var i = 0; i < divs.length; ++i) {
        var string = divs[i].innerText;
        var substr = "substring to search for";
        if (string.indexOf(substr) > -1) {
            divs[i].innerText = "This is hidden for your safety!"
        }
    }
}

$(document).ready(function () {
    console.log("test");
    document.addEventListener('DOMNodeInserted', replaceDivs());
});

我的manifest.json文件:

{
    "manifest_version": 2,
    "name": "Replace Text",
    "version": "1.0", 

    "browser_action": {
        "default_popup": "popup.html"
    },

    "content_scripts": [ {
        "js": [ "jquery-1.12.3.js", "content.js" ],
        "matches": [ "<all_urls>" ],
        "run_at": "document_end"
    } ]
}

所以我的最后一个问题:我如何解决这个问题,以便我可以在Google搜索结果页面中使用div数组来查找和替换文本?

任何帮助都会非常感激!

0 个答案:

没有答案