HTML文档类型设置/IE怪异模式

5

我正在与一个无法联系到的开发人员合作,他为我们的产品创建了一个HTML生成系统。每当生成新页面时,他会放置:

<!-- updated page at 05/MAY/2010 02:58.58 -->
<!-- You must use the template manager to modify the formatting of this page. --> 

导致我的代码看起来像这样:
<!-- updated page at 05/MAY/2010 02:55.30 -->
<!-- You must use the template manager to modify the formatting of this page. -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

我不认为IE会读取这种文档类型,因为在开发者界面中看到的渲染模式是Quirks模式...有没有其他办法可以强制IE退出这个可怕的Quirks模式?我一直在试图联系开发者,但他一直很难联系到...
非常感谢您提供的任何帮助。
//编辑:
这是否可以通过javascript实现,在加载命令时击中父页面?

这有点晚了,但问题在于doctype前面的注释。这会导致IE切换到怪异模式。 - Stefan Steiger
5个回答

2
您可以通过添加以下内容来强制IE使用标准模式:
<meta http-equiv="X-UA-Compatible" content="IE=8" />

将以下代码添加到HTML头部或通过服务器配置添加同等的HTTP标头。此方法仅适用于IE8及以上版本。

2

你现在无能为力了。你的内容管理系统出现了故障。你需要找到开发人员修复这个有问题的系统,或者更换一个新的内容管理系统。


糟糕..我会继续发送电子邮件。谢谢。 - Petrogad

0

是的,这是可能的,但这是一件非常糟糕的事情。

更新。对不起,没有,它不起作用。

但在某些情况下,我们对向用户提供的内容无法控制。典型情况:公司由于某种法律原因而必须使用的付款网关。他们允许您样式化页面并添加自己的内容,但不允许更改或设置文档类型(甚至没有设置!)。

所以,受到这个链接的启发:http://www.webmasterworld.com/forum91/4856.htm 一个优雅的解决方案可能是这样的(将其放在闭合的body标签</body>之前):

<!--[if IE]>
<script>
!function() {
var doctype = "<!DOCTYPE html>",
    headHTML = document.head.outerHTML,
    bodyHTML = document.body.outerHTML;

window.doctypeSet = false;

if (window.doctypeSet) return;
setTimeout(function(){
  document.write(
    doctype + 
    "<html>" + 
    headHTML + 
    bodyHTML +
    "</html>"
  );
  window.doctypeSet = true;
}, 0);

}();
</script>
<![endif]-->

然而,您可能还想将<!--[if IE]>更改为类似于<!--[if lte IE 9]>的内容,以便IE10及更高版本不执行此“肮脏的舞蹈”。我不确定如果没有doctype,IE10是否也会切换到quirksmode,如果没有切换,则无需在那里调用此代码。


0
页面是如何生成的?
如果您正在使用PHP,您可以使用输出缓冲来防止模板注释被输出。

很遗憾,我甚至无法控制它们是如何生成的 :/ 我点击构建,HTML页面被构建出来,而我只能使用页面上的内容,我可以重新构建,但那个注释始终会保持在顶部。 - Petrogad

0
如果您被卡住了,为什么不在构建过程中添加一个最后步骤来去除这些注释呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接