PHP/HTML/CSS:IE 在使用 require_once() 时表现得很奇怪
Posted
技术标签:
【中文标题】PHP/HTML/CSS:IE 在使用 require_once() 时表现得很奇怪【英文标题】:PHP/HTML/CSS: IE acting weird when using require_once() 【发布时间】:2010-11-15 14:18:00 【问题描述】:这是我在 php 中遇到过的最奇怪的问题。
所有页面看起来都正常,除了一个;当我第一次看到这个问题时,我认为这是 IE 和样式表的常见问题之一(我在这个页面上有一个特定的 CSS 文件)。我试图排除 CSS 文件只是为了确保问题确实出在这个文件中,但事实并非如此。然后我以为我忘记关闭任何 html 标签,所以我多次检查代码,但似乎一切都是正确的。于是我开始把代码放到cmets中,和IE比较,直到我发现当我把下面的代码放到评论中时,页面本身就正常了:
require_once(PATH_INCLUDES . 'adjacency.php');
这是一个有效的路径,并且该文件确实只包含一个带有函数的类 - 如果 mysql 查询失败,除了 die() 之外没有任何输出。
在 IE 中看起来很奇怪的一些东西如下:
容器通常居中,现在位于左侧。 带有repeat-x 的背景不会一直走。 菜单中的悬停功能不起作用。有人吗?
编辑:我尝试将 adjacency.php 包含在另一个文件中,但出现了同样的问题。
【问题讨论】:
【参考方案1】:作为猜测,在关闭“?>”之后,包含文件的末尾很可能有一些空格。 (Zend Framework 建议不要使用结束 PHP 标记的原因之一。)
【讨论】:
可能是原因,在 IE6 中 doctype 触发 quirksmode 之前的任何输出 我也是这么想的,所以我检查了一下,甚至在 IE 中右键单击->源。文档类型之前没有任何内容。 我会检查包含文件的开头和结尾以确定问题 - 它可能是导致问题的非显示字符。 检查并确认-PHP部分之前或之后没有字符。 我很好奇这不是“关闭 php 标签”。您能否提供此声明的链接?我想在上下文中阅读它。谢谢!【参考方案2】:包含的 PHP 文件是否以 UTF-8 BOM(字节顺序标记)开头?这是一个不可见的字节序列,有时会出现在 Unicode 文本文件的开头,以帮助自动检测 UTF。不幸的是,PHP 有点幼稚,当它从包含的 PHP 文件中读取 BOM 时,它会输出 BOM。通过我的实验,IE 可以处理一个 BOM,但是如果 BOM 加倍(如果浏览器请求的 PHP 文件和一个包含的每个都包含 BOM,则会出现这种情况),那么它无法将 doctype 视为在开头并且因此触发了怪癖模式。
确保您的编辑器配置为不使用 BOM 进行保存。
【讨论】:
我确实将我的文件保存为 UTF-8。我正在使用 UltraEdit,DOM 似乎被禁用了。以上是关于PHP/HTML/CSS:IE 在使用 require_once() 时表现得很奇怪的主要内容,如果未能解决你的问题,请参考以下文章
用于 Web 开发和设计的有用 Vim 插件(php、html、css、javascript)? [关闭]
PHP/HTML/CSS-使用过滤器和/或ingore列表递归扫描directoy的脚本