首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过javascript生成html :避免htmltidy错误

通过javascript生成html :避免htmltidy错误
EN

Stack Overflow用户
提问于 2013-07-17 09:36:07
回答 2查看 60关注 0票数 0

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

在Firefox22中使用HTML验证器0.9.5.1验证时,我得到一个错误:的文档类型不允许元素"span“在这里‘

我正在使用这个JavaScript:

代码语言: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元素的解决方案。

注意:避免在jQuery脚本中使用/ html()中的答案对我没有帮助,因为我知道代码可以工作。我想重新格式化以避免验证错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-17 09:47:50

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

HTML的反对意见是,您正在放置一些您认为浏览器将呈现为HTML的内容,您需要对实体(用<>替换为&lt;&gt;)进行赋值,以便将其解释为文本。

更新以响应注释:对于XHTML,文档必须是格式良好的。因此,您需要在脚本标记中使用CDATA标记:

代码语言:javascript
复制
<!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>
票数 1
EN

Stack Overflow用户

发布于 2013-07-17 09:47:06

你不能把<div>放在<pre>里面。

代码语言:javascript
复制
只能包含短语内容,而不包含。另外,您应该使用<![CDATA[ ... ]]>部分包装脚本,因为doctype是XHTML。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17696247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档