我的问题涉及以下 Javascript,它包含在 HTML 文档正文之后:

   <script language="javascript"> 
    function walkText(node) { 
      if (node.nodeType == 3) { 
        node.data = node.data.replace(/Blah Blah Blah/gi, "<span style=\"font-family: elektora;\">a<span style=\"font-size: 80%\">shen</span> g<span style=\"font-size: 80%\">low</span> g<span style=\"font-size: 80%\">aming</span></span>"); 
      } 
      if (node.nodeType == 1 && node.nodeName != "SCRIPT") { 
        for (var i = 0; i < node.childNodes.length; i++) { 
          walkText(node.childNodes[i]); 
        } 
      } 
    } 
    walkText(document.body); 
   </script> 

请注意,替换文本包含内部和外部 HTML 内容的混合,并且不会在浏览器中相应地呈现。它以原始未处理的 HTML 形式输出 - <span style=\"font-family: elektora;\">a<span style=\"font-size: 80%\">shen</span> g<span style=\"font-size: 80%\">low</span> g<span style=\"font-size: 80%\">aming</span></span> - 在浏览器中。

如何修改查找和替换代码以在浏览器中以这种方式进行替换,以便将其视为混合的内部和外部 HTML 内容。目前,它用另一个文本字符串替换原始文本字符串,该文本字符串的 HTML 标签不会在浏览器中呈现。

请您参考如下方法:

问题的原因是您正在替换文本节点。所以字符串没有渲染。尝试以下代码块

function walkText(node) { 
let replacedText = "<span style='font-family: elektora;'>a<span style='font-size: 80%'>shen</span> g<span style='font-size: 80%'>low</span> g<span style='font-size: 80%'>aming</span></span>"; 
let pattern = /hhh/gi; 
 
  if (node.nodeType == 1 && node.nodeName != "SCRIPT") { 
 
  let indx = node.innerHTML.search(pattern, replacedText);       
  if (indx != -1) 
  { 
      node.innerHTML = node.innerHTML.replace(pattern, replacedText); 
  } 
  else 
  {       
    for (var i = 0; i < node.childNodes.length; i++) { 
      walkText(node.childNodes[i]); 
    } 
   } 
  }       
} 
walkText(document.body); 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!