为什么 CDATA 不保护我的 javascript 代码不受 HTML 验证器的影响?

Why isn't CDATA protecting my javascript code from the HTML validator?

我在我的网页中插入了一些 js 代码(由第三方服务提供),它破坏了我的 html 验证。我该如何解决这个问题? CDATA 没有解决问题。 这是我的示例片段:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head>
  <title>test</title>
  <script type="text/javascript">
  /*<![CDATA[*/
    document.write('<script src="//sharebutton.net/plugin/sharebutton.php?type=horizontal&u=' + encodeURIComponent(document.location.href) + '"></scr' + 'ipt>');
  /*]]>*/
  </script>
</head>
<body>

  <p>test</p>

</body>
</html>

here你可以找到验证器的结果。

<![CDATA[* 是 XML 的特征,而不是 HTML。它只是 HTML 项中脚本元素文本内容的一部分。

要安全地将字符串 </script> 包含在 HTML 中的 JavaScript 字符串文字中:转义斜杠:

'"><\/script>')

我认为您的嵌套块注释是错误的。试试这个...

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    <html> 
    <head>
      <title>test</title>
      <script type="text/javascript">
      /*<![CDATA[
        document.write('<script src="//sharebutton.net/plugin/sharebutton.php?type=horizontal&u=' + encodeURIComponent(document.location.href) + '"></scr' + 'ipt>');
      ]]>*/
      </script>
    </head>
    <body>

      <p>test</p>

    </body>
    </html>