如果我想用JavaScript再次渲染整个页面,我必须在不重新加载页面的情况下更改文档类型。是否可以使用JavaScript更改文档类型,或者只是在服务器端重新加载页面和呈现新文档类型的现实选择?
答案 0 :(得分:4)
document.doctype;
//<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
var newDocType = document.implementation.createDocumentType( 'svg:svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' );
document.replaceChild( newDocType, document.doctype);
document.doctype;
//<!DOCTYPE svg:svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
https://developer.mozilla.org/En/DOM/DOMImplementation.createDocumentType
https://developer.mozilla.org/En/DOM/Node.replaceChild
请仔细阅读参考资料,我个人无法理解任何用例,因此我没有使用此个人经验。
答案 1 :(得分:2)
是否可以使用JavaScript更改文档类型??
没有。 DOCTYPE不是DOM 的一部分(正在考虑XML样式表声明)。
虽然您可以更改文档的DocumentType(doctype)节点,但这样做的结果不太可能有用或可靠。
目前的标准是DOM 3 Core,其中document.doctype的定义(部分):
但请注意,虽然某些实现可能会实例化 支持其他功能的不同类型的Document对象 ......基于 在创建时指定的DocumentType,之后更改它 不太可能导致支持的功能发生变化。
还应该注意Interface DocumentType位于Extended Interfaces: XML Module部分,它适用于XML文档,并不是HTML文档的强制要求,也不是用于HTML文档。
在提议的DOM 4核心标准中,section 5.1 Node Tree表示doctype节点在节点树中是可选的。
如果打算将文档从怪异模式更改为 no-quirks 模式,则在DOM 4草案中会有以下非规范性评论:
如果文档是,则模式仅从默认模式更改 由HTML解析器根据存在,缺席或值创建的 DOCTYPE字符串。
DOM 4还默认假定所有文档都是XML,除非DOCTYPE另有说明,否则可能需要一些时间来过滤到正在使用的浏览器。