有人知道怎么使用JavaScript动态更改文档类型吗?
我已经尝试了这个函数:
document.doctype('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'); ,
但它不起作用。
有人知道怎么使用JavaScript动态更改文档类型吗?
我已经尝试了这个函数:
document.doctype('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">'); ,
但它不起作用。
我希望这个能对你们中的一些人有所帮助(已在控制台中测试,它可以改变实际的 DOCTYPE)
var newDoctype = document.implementation.createDocumentType(
'html',
'-//W3C//DTD XHTML 1.0 Transitional//EN',
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdd'
);
document.doctype.parentNode.replaceChild(newDoctype,document.doctype);
window.load
还是document.ready
里面更好呢?应该是放在window.load
里面吧? - Jim22150<html tal:omit-tag="True" ...>
<body tal:omit-tag="True">
<div class="wrapper" tal:omit-tag="True">
..
<div id="mydiv" tal:content="foo()">Example content.</div>
..
</div>
</body>
</html>
这样,设计师可以将这个TAL模板视为一个独立的HTML文件进行查看和编辑。在TAL中不能省略DTD,因此无法在其中添加。
使用JavaScript添加它的简单方法如下:
if (!document.doctype) {
document.write('<!doctype HTML>\n' + \
document.head.outerHTML + \
document.body.outerHTML);
}
document.doctype
是一个只读属性,而不是方法,这个信息来自于MDC。
你需要的是:
https://developer.mozilla.org/zh-CN/docs/Web/API/DOMImplementation/createDocumentType
返回一个DocumentType对象,可用于在创建文档时与DOMImplementation.createDocument一起使用,或者可以通过Node.insertBefore()或Node.replaceChild()放入文档中:
我认为你做不到。在W3C文档中,doctype
被列为一个属性,但它是只读的。即使它不是只读的,我也无法想象在现实世界的浏览器中更改它会产生什么影响。
关于您后续的评论:您必须在服务器端处理此问题,并返回适合目标浏览器的页面。但在除了一些非常边缘的情况之外,您不应该这样做。
<!--[if lt IE 9]>
<![endif]-->
<![if gte IE 9]>
<!DOCTYPE html>
<![endif]>
这里我已经从浏览器中删除了文档类型声明