我正在尝试构建一个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”变量仍然是空的。
我的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数组来查找和替换文本?
任何帮助都会非常感激!