我终于完善了我的网页,它在每种浏览器中都可以完美运行。
但是,当我将页眉和页脚内容抽象到服务器端include中时,在Firefox / Opera / Safari中布局略有更改,但是在IE中,布局更改使页面看起来很破损。
使用SSI时,是否存在任何可能导致布局更改的已知问题? 坦率地说,我很惊讶使用SSI会产生这样的效果。 我正在使用HTML5标签,modernizr js库,并且该页面会验证其中是否有任何问题。
编辑:我通过更改抽象的代码解决了我的问题(我比以前简单地抽象了一个父标记)。 但是,我仍然很想确切地知道为什么此错误首先发生。 那里有人可以揭露特别是什么会引起这种情况吗?
它不应该更改任何内容,因为includes是在服务器端处理的,返回给浏览器的所有内容都是HTML。 最有可能解决该问题的方法是抽象。 也许您缺少结束标记或其他东西? 我认为这是最可能的答案。
正如Jamie所说,SSI应该没有作用。 客户应该不知道网页是由乐高玩具制成的,而不是一个大砖头。 您可能在某个地方犯了一个错误。
很有可能不是引起任何问题的SSI。
HTML代码中很可能存在换行符,导致IE插入多余的空格,从而导致布局中断。
另外,在将片段移动到包含文件时,请确保正确分离了代码。通过验证程序运行HTML可能是最简单的检查方法。
分离代码就好了。 除了将html代码粘贴和粘贴到适当的SSI中之外,我没有添加或更改任何其他内容。 因此,如果我不添加任何内容,多余的空间从何而来?
capdragon涵盖了我所说的IE可能会添加多余空间的内容。 IE特别挑剔地在在源代码中跨越多行的标记末尾添加额外的空间。 那很可能是您的问题。
UTF-8可能是文件编码问题,在包含文件的开头插入了BOM字符。我的解决方案是将包含文件另存为UTF-8,而没有BOM表签名。
我注意到body标记显示了额外的空间之后才包含了include语句,但是在include语句周围添加(any?)html标签会将其隐藏。我猜想浏览器会在字符"进入"正文而不是开始时忽略它们。
我的特殊情况涉及Visual Studio,但其中混合了各种编辑器。也可以看看
使用PHP include时如何避免空格?
强制Visual Studio(2010)将所有文件保存为UTF-8
不带BOM的UTF-8
问题最终成为服务器解析HTML和HTML5标签的错误。无论出于何种原因,当我向SSI添加一个额外的标签集时,它都可以工作。
我的原始包含如下所示:
包含的文件为:
Home
Products
About
Contact
但是,当我从包含中取出所有HTML5标签时,如下所示,一切正常。我不确定这是否是旧版本的apache或其他问题,但是这样做可以解决所有问题。
我有一个类似的问题,并解决如下。
我有这样的事情:
并将其更改为:
我在HTML中以及在SSI中再次修剪了空格,但是并没有解决问题。
好的,虽然值得一试。