是否可以使用JavaScript更改文档类型而无需重新加载页面?

时间:2011-12-31 14:45:16

标签: javascript

如果我想用JavaScript再次渲染整个页面,我必须在不重新加载页面的情况下更改文档类型。是否可以使用JavaScript更改文档类型,或者只是在服务器端重新加载页面和呈现新文档类型的现实选择?

2 个答案:

答案 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另有说明,否则可能需要一些时间来过滤到正在使用的浏览器。