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

标签 javascript cdata html-validation

我在我的网页中插入了一些 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>')

关于javascript - 为什么 CDATA 不保护我的 JavaScript 代码不受 HTML 验证器的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461809/

相关文章:

Javascript - 游戏侧面碰撞(从下到上)

javascript - 我喜欢这个技巧...但是它在 JavaScript 中安全吗

javascript - 使用 ExecJS 从 Rails 应用程序调用 Node.js 脚本

javascript - 使用有意的 HTML 注入(inject)创建 HTML

iphone - xml文件的CDATA中的下标和上标。使用UILabel显示已解析的XML内容

javascript - 使用 document.implementation.createDocument 创建新的 HTML 文档

html - IE 9 中的兼容模式

html - 自己写 "&"是不是无效HTML?为什么?

xml - Visual Studio 在 VB 中对 CDATA XML block 的可怕着色。

html - 此时元素时间不允许属性 pubdate