2023-09-26T11:32:36.png

// 获取所有文本节点
var textNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);

// 遍历每个文本节点
while (textNode = textNodes.nextNode()) {
  var content = textNode.nodeValue;
  
  // 使用正则表达式匹配指定关键字
  var keyword = '指定关键字';
  var regexp = new RegExp(keyword, 'gi');
  
  if (content.match(regexp)) {
    // 创建一个新的span元素,并设置样式为红色
    var span = document.createElement('span');
    span.style.color = 'red';
    
    // 替换文本节点的内容为带有红色标记的内容
    var replacedContent = content.replace(regexp, function(match) {
      return '<span style="color: red;">' + match + '</span>';
    });
    
    // 将替换后的内容插入到文本节点前面
    var parentElement = textNode.parentNode;
    var tempDiv = document.createElement('div');
    tempDiv.innerHTML = replacedContent;
    while (tempDiv.firstChild) {
      parentElement.insertBefore(tempDiv.firstChild, textNode);
    }
    
    // 移除原始的文本节点
    parentElement.removeChild(textNode);
  }
}