使用javascript设置doctype

使用javascript设置doctype,javascript,html,doctype,Javascript,Html,Doctype,我有一个html页面,没有声明部署到服务器的doctype(比如a)。这是从另一台服务器(比如B)获取js文件。js创建必要的html页面来显示。现在IE8正在制造问题,因为没有声明doctype(将自身设置为IE5怪癖模式) 现在,doctype是读取的第一行,这似乎不可能通过这种方式完成(使用js设置doctype)。是否可以设置meta标记来将页面设置为标准模式?或者是否有其他我可以设置页面为标准页面,而无需修改服务器A的html页面 var nodeDoctype = document.

我有一个html页面,没有声明部署到服务器的doctype(比如a)。这是从另一台服务器(比如B)获取js文件。js创建必要的html页面来显示。现在IE8正在制造问题,因为没有声明doctype(将自身设置为IE5怪癖模式)

现在,doctype是读取的第一行,这似乎不可能通过这种方式完成(使用js设置doctype)。是否可以设置meta标记来将页面设置为标准模式?或者是否有其他我可以设置页面为标准页面,而无需修改服务器A的html页面

var nodeDoctype = document.implementation.createDocumentType(
 'html',
 '-//W3C//DTD XHTML 1.0 Transitional//EN',
 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdd'
);
if(document.doctype) {
    document.replaceChild(nodeDoctype, document.doctype);
} else {
    document.insertBefore(nodeDoctype, document.childNodes[0]);
}
根据您的评论更新:

可以使用JS更改doctype以实现兼容性查看(如下所示:),但这是一个非常讨厌的攻击,不推荐使用。理想情况下,您可以在服务器端执行此操作。因此,请使用doctype js参数,然后重新加载页面:

window.location = window.location+"?doctype=newdoctype"

这将导致页面重新加载,这可能不适合您,但这是最安全的方法

-但是,如果可以设置元标记,则可以设置doctype。这两个文件都必须在加载时读取-同时读取此文件将使浏览器重新读取doctype。html页面已加载。顺便说一句,
document.doctype为null
如何在IE中执行此操作。
createDocumentType
在Interest中不可用。我很想说这个答案是完全错误的,因为XML解析器实际上使用DOCTYPE来确定如何解释和验证(X)HTML/XML标记,因此修改已经解析的DOM来更改DOCTYPE是无用的。但它是IE,可能真的有用。“
文档类型定义(DTD)定义XML文档的合法构造块。它使用合法元素和属性列表定义文档结构。
”如果使用javascript添加doctype,浏览器将不会重新读取它