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 会读取这种 doctype,因为在查看开发人员屏幕时,它会以 Quirks 模式呈现……还有其他方法可以迫使 IE 退出这种可怕的 Quirks 模式吗?我一直在尝试联系开发人员,但他一直很不可用..

提前感谢您提供的任何帮助。

//编辑:

这是否可以通过 javascript 来实现,使用加载命令来访问父页面?

4

5 回答 5

2

你无能为力。您的内容管理系统出现故障。您要么需要找到开发人员并让他们修复这个有故障的系统,要么获得一个新的内容管理系统。

于 2010-05-05T03:34:02.487 回答
2

您可以通过添加强制 IE 使用标准模式

<meta http-equiv="X-UA-Compatible" content="IE=8" />

到 HTML 的 head 部分的开头,或者您可以通过服务器配置添加等效的 HTTP 标头。但是,这仅适用于 IE8 或更高版本。

于 2010-09-28T17:54:32.053 回答
0

页面是如何生成的?

如果您使用的是 PHP,您可以使用输出缓冲来防止模板注释被输出。

于 2010-05-05T03:23:24.460 回答
0

如果您被该代码所困扰,那么为什么不在构建过程中添加最后一步,去掉这些注释呢?

于 2010-05-05T09:54:42.923 回答
0

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

UPD。对不起,不,它不起作用。

但在某些情况下,我们根本无法控制提供给用户的内容。典型情况:贵公司出于某种法律原因必须使用的支付网关。它们允许您设置页面样式并将您自己的内容放入其中,但它们不允许更改或设置文档类型的方式(并且根本没有设置!)。

因此,受此链接的启发:http ://www.webmasterworld.com/forum91/4856.htm和美化的解决方案可能是这样的(把它放在你的结束体标签之前</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,如果它没有切换,那么就没有必要在那里调用此代码。

于 2012-01-26T11:43:00.610 回答