我有一个网页,通过JavaScript生成HTML。
在Firefox22中使用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元素的解决方案。
注意:避免在jQuery脚本中使用/ html()中的答案对我没有帮助,因为我知道代码可以工作。我想重新格式化以避免验证错误。
发布于 2013-07-17 09:47:50
pre元素用于预先格式化的文本,而不是更多的HTML。
HTML的反对意见是,您正在放置一些您认为浏览器将呈现为HTML的内容,您需要对实体(用<和>替换为<和>)进行赋值,以便将其解释为文本。
更新以响应注释:对于XHTML,文档必须是格式良好的。因此,您需要在脚本标记中使用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>发布于 2013-07-17 09:47:06
你不能把<div>放在<pre>里面。
只能包含短语内容,而不包含。另外,您应该使用<![CDATA[ ... ]]>部分包装脚本,因为doctype是XHTML。https://stackoverflow.com/questions/17696247
复制相似问题