使用 Chrome 扩展程序格式化单词(使其变为红色)[重复]

Posted

技术标签:

【中文标题】使用 Chrome 扩展程序格式化单词(使其变为红色)[重复]【英文标题】:Format a word (make it red) with a Chrome Extension [duplicate] 【发布时间】:2018-04-18 02:42:50 【问题描述】:

不是骗子...没有提到的工作.. 试图用谷歌扩展突出显示一个词。将此作为内容脚本运行,但它似乎不是一个有效的解决方案......我错过了什么?

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("Target Text", "<font color='red'>Target Text</font>");

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

【问题讨论】:

【参考方案1】:

在这一行中,您要求一个节点的子节点:

 var node = element.childNodes[j];

这将始终返回一个节点数组,即使只有一个节点。 所以这个条件永远不会成立:

if (node.nodeType === 3)

你实际上得到了所有nodes,你也必须循环这些。

【讨论】:

嗯,实际上它确实有效,但不是 html 代码......它不会使它变红,而只是用没有格式的代码替换页面上的单词"目标文本" @JessicaRay 你可能想设置innerHTML而不是节点的文本。 是的,@Nate,你说得对……谢谢。

以上是关于使用 Chrome 扩展程序格式化单词(使其变为红色)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Google禁止从第三方网站安装Chrome扩展程序

更改崇高文本3中特定单词的颜色

Chrome 扩展程序中的上下文菜单

chrome.storage.sync.set 后对象属性变为空

Chrome 扩展替换当前文本区域中的单词

如何在 Chrome 扩展程序中以编程方式关闭 gmail 撰写对话框