通过javascript生成html:避免HTMLIDY错误
我有一个通过JavaScript生成HTML的网页 在Firefox 22中使用HTML validator 0.9.5.1进行验证时,我得到一个错误:“文档类型不允许在此处使用元素“span” 我正在使用以下JavaScript:通过javascript生成html:避免HTMLIDY错误,javascript,htmltidy,html-generation,Javascript,Htmltidy,Html Generation,我有一个通过JavaScript生成HTML的网页 在Firefox 22中使用HTML validator 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"> ...
<!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>
......
var someHtml='Hello world!';
变量e;
e=window.document.createElement('div');
e、 innerHTML=someHtml;
window.document.body.appendChild(e);
显然,解析器假定
嵌套在
我应该如何重写JavaScript以通过HTML验证?我更喜欢不需要我创建HTML元素的解决方案
注意:中的答案对我没有帮助,因为我知道代码是有效的。我想重新格式化以避免验证错误。您不能将
放入
中。只能包含,其中不包含
<!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>
另外,由于doctype是XHTML,您应该用
部分包装脚本。pre元素用于预格式化文本,而不是更多的HTML
HTMLTidy的反对意见是,您正在放置它认为您希望浏览器呈现为HTML的内容,您需要对实体进行替换(将
替换为
和
),以便将其解释为文本
更新对评论的回应:
对于XHTML doctype,文档必须是格式良好的XML。因此,您需要在脚本标记中添加CDATA
标记:
你好,世界
//
我不是想问显而易见的问题,但是您正在检查的DTD对div可以和不可以在哪里有什么说明呢?我在问题中添加了
。“显然解析器假设div嵌套在
中”-我怀疑这一点。您是对的。我更新了示例,使用div而不是pre。问题仍然是你是对的。我更新了示例,使用div而不是pre。问题还是一样