我有一个没有声明doctype的html页面部署到服务器(比如说A)。这是从另一台服务器(比如B)获取js文件。 js创建必要的html页面来显示。现在IE8正在创建问题,因为没有声明doctype(将自己设置为IE5怪癖模式)
现在doctype是读取的第一行,这似乎不可能以这种方式完成(使用js设置doctype)。是否可以设置元标记而不是将页面设置为标准模式?或者还有其他任何我可以将页面设置为标准页面而无需从服务器A修改html页面。
答案 0 :(得分:4)
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以启用兼容性查看(如此处所做:http://www.webmasterworld.com/forum91/4856.htm),但这是一个非常讨厌的黑客,不推荐。理想情况下,您可以执行此服务器端。所以有一个doctype js参数,然后做一个页面重新加载:
window.location = window.location+"?doctype=newdoctype"
这会导致页面重新加载,这可能不适合您,但这是最安全的方法。