javascript - 通过javascript生成html : avoiding htmltidy error

标签 javascript htmltidy html-generation

我有一个通过 JavaScript 生成 HTML 的网页。

在 Firefox 22 中使用 HTML 验证器 0.9.5.1 进行验证时,出现错误:'文档类型不允许此处使用元素“span”'

我正在使用这个 JavaScript:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 ...<body>...
 <script type='text/javascript'>
var someHtml = '<span>Hello world!</span>';
var e;
e = window.document.createElement('div');
e.innerHTML = someHtml;
window.document.body.appendChild(e);
 </script>

显然解析器假设 <span>嵌套在 <script>

我应该如何重写 JavaScript 以通过 HTML 验证?我更喜欢一个不需要我创建 HTML 元素的解决方案。

注意:Avoiding HTML-in-string / html() in a jQuery script中的答案不要帮助我,因为我知道代码可以工作。我想重新格式化以避免验证错误。

最佳答案

pre元素用于预格式化文本,而不是更多 HTML。

HTML Tidy 的反对意见是,您放入了它认为您希望浏览器呈现为 HTML 的内容,您需要对实体进行转义(将 <> 替换为 &lt;&gt; ),以便它被解释为文本。

针对评论的更新: 对于 XHTML 文档类型,文档必须是格式良好的 XML。所以,你需要CDATA脚本标签内的标记:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>Hello world</title>
  </head>
  <body>
  <script type='text/javascript'>
  //<![CDATA[
  var someHtml = "<div>Hello world!</div>";
  var e;
  e = window.document.createElement('div');
  e.innerHTML = someHtml;
  window.document.body.appendChild(e);
  //]]>
  </script>
  </body>
</html>

关于javascript - 通过javascript生成html : avoiding htmltidy error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696247/

相关文章:

html - 最大 CSS 样式化的自动 HTML 生成指南

javascript - 网络 worker 突然终止

javascript - 如何使用 Mustache 模板向下拉列表添加选项?

javascript - 为什么我的 meteor 模板没有被 react 性渲染?

javascript - Jscrollpane 和内部 anchor 链接

python - 在 python 中将列表转换为 HTML 表格的最简单方法?

html - 使用 HTML Tidy 来缩进 HTML 代码?

html - 防止 HTML Tidy 剥离 PHP

unicode - HTML Tidy 处理后的希伯来字符变成了乱码

php - 如何构造生成html的php