2009-07-30 63 views
2

时,IE表现很奇怪现在,这是我在PHP中遇到的最奇怪的问题。PHP/HTML/CSS:当使用require_once()

除了一页以外,所有页面看起来都正常;当我第一次看到这个问题时,我认为这是IE和样式表常见的问题之一(我在这个页面上有一个特定的CSS文件)。我试图排除CSS文件只是为了确保问题确实存在于这个文件中,但事实并非如此。然后,我想我已经忘记关闭任何HTML标签,所以我多次浏览代码,但似乎都是正确的。于是,我开始把代码中的注释,直到我意识到,当我的推杆在评论下面的代码,网页本身的行动正常使用IE比较:

require_once(PATH_INCLUDES . 'adjacency.php'); 

这是一个有效的路径和文件不只是包含一个带有函数的类 - 除了die(),如果MySQL查询失败,没有任何输出。

有些东西,在IE看起来很怪异如下:

  • 容器通常是中心,现在它的左侧。
  • 带有repeat-x的背景并不完整。
  • 菜单中的悬停功能不起作用。

有人吗?

编辑:我试图将adjacency.php包含在另一个文件中,并且发生了同样的问题。

回答

5

作为一个猜测,在关闭“?>”之后,最有可能在包含文件末尾有一些空格。 (Zend Framework建议不使用关闭PHP标记的原因之一。)

+2

可能是原因,doctype之前的任何输出都会触发IE6中的quirksmode – 2009-07-30 20:26:03

+0

我也这么认为,所以我在IE中检查了它,甚至在右键单击源代码。 doctype之前没有任何东西。 – Ivar 2009-07-30 20:27:44

1

包含的PHP文件是否以UTF-8 BOM(字节顺序标记)开头?这是一个不可见的字节序列,有时出现在Unicode文本文件的开头,以帮助自动检测UTF。不幸的是,PHP有些天真,并且会在从包含的PHP文件中读取BOM时输出BOM。通过我的实验,IE可以处理一个BOM,但是如果BOM翻倍(如果浏览器请求的PHP文件和每个包含BOM的文件都是这种情况),那么它不会将doctype看作是开始时的情况,从而触发怪癖模式。

确保您的编辑器配置为保存没有物料清单。