该问题在您的代码中可见:
<script>(function fix_ie8() {if (strpos($_SERVER['HTTP_USER_AGENT'],”MSIE 8″)) {header(”X-UA-Compatible: IE=7″);}}
add_action('send_headers','fix_ie8'))();
这在几个方面都是错误的。
首先,它使用了错误的引号字符。
其次,你有试图成为 Javascript 的 PHP 代码。
第三,即使你把它改回PHP,你仍然需要移动它,因为header()
只能在页面的任何部分输出之前调用。所以它需要在你开始之前完成,而不是在标题的中间。
最后,这严重破坏网站的原因是因为它导致 Javascript 解释器看到错误并停止处理。因此,您包含的文件中的 IE 修复程序html5.js
不会运行,因此您的页面布局将被破坏。
简而言之,这行代码需要被锁定并且永远不会再被提及。
因此,让我们分解这里发生的事情并尝试找到解决方案......
该代码试图使用X-UA-Compatible
标头强制 IE8 进入 IE7 兼容模式。我要说的是,既然您说您甚至从未在 IE 中进行过测试,那么您为什么认为无论如何都需要使用 IE7 兼容模式?
为什么不直接尝试不使用那行代码,看看会发生什么?如果您在 IE8 中确实有一些小的布局故障,最好修复它们而不是使用兼容模式。
如果您必须使用 IE7 兼容模式,那么您可以使用它,而根本不需要任何类型的脚本。只需使用元标记:
<meta http-equiv="X-UA-Compatible" content="IE=7" />
这就是你所需要的。
如果您希望标签只影响 IE8(即不影响 IE9),那么您可以将它包装在 IE 条件注释中(您已经在页面的其他地方使用了它)。