Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找并替换谷歌搜索div';使用Chrome扩展的innerHTML_Javascript_Jquery_Google Chrome_Asynchronous_Google Chrome Extension - Fatal编程技术网

Javascript 查找并替换谷歌搜索div';使用Chrome扩展的innerHTML

Javascript 查找并替换谷歌搜索div';使用Chrome扩展的innerHTML,javascript,jquery,google-chrome,asynchronous,google-chrome-extension,Javascript,Jquery,Google Chrome,Asynchronous,Google Chrome Extension,我正在尝试构建一个Chrome扩展,它可以扫描一些Google搜索结果,如果div的原始innerHTML包含特定的单词或短语,则可以用字符串替换div的innerHTML(或innerText) 每当我尝试使用类“g”获取div,并尝试使用该值检查replaceDivs函数中的innerHTML和与div关联的其他属性时,我总是发现变量“divs”为空。在阅读其他Stackoverflow文章后,我发现我必须添加一个事件侦听器,这是在DocumentReady函数中完成的。但是,尽管添加了一个

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

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

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

我收到这样的信息:

My 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());
});
//如果找到特定子字符串,则用消息替换divs内部文本。
函数replaceDivs(){
var divs=document.getElementsByClassName(“g”);
控制台日志(divs);
对于(变量i=0;i-1){
divs[i].innerText=“这是为了您的安全而隐藏的!”
}
}
}
$(文档).ready(函数(){
控制台日志(“测试”);
addEventListener('domandeinserted',replaceDivs());
});
My 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"
    } ]
}
{
“清单版本”:2,
“名称”:“替换文本”,
“版本”:“1.0”,
“浏览器操作”:{
“默认弹出窗口”:“popup.html”
},
“内容脚本”:[{
“js”:[“jquery-1.12.3.js”,“content.js”],
“匹配项”:[“”],
“运行时间”:“文档结束”
} ]
}
所以我的最后一个问题是:如何解决这个问题,以便我可以使用谷歌搜索结果页面中的div数组来查找和替换文本


任何帮助都将不胜感激

你的replaceDivs()函数被调用过一次吗?是的,它只被调用过一次。好的。这些div是动态添加的。在document.ready()之后。对吧?你是说谷歌搜索结果?我以为它们已经被添加了,因为我在addEventListener调用中指定了“run_at”:“document_end”?印刷错误。不要在调用的函数中加括号。你的replaceDivs()函数调用过一次吗?是的,它只调用过一次。好的。这些div是动态添加的。在document.ready()之后。对吧?你是说谷歌搜索结果?我以为它们已经被添加了,因为我在addEventListener调用中指定了“run_at”:“document_end”?印刷错误。不要在调用的函数中插入括号。