2

我终于完善了我的网页,它在每个浏览器中都能完美运行。

但是,当我将页眉和页脚内容抽象到服务器端包含时,Firefox/Opera/Safari 中的布局略有变化,但在 IE 中,布局变化使页面看起来很糟糕。

使用 SSI 时是否存在任何可能导致布局更改的已知问题?坦率地说,我很惊讶使用 SSI 会产生这样的效果。我正在使用 HTML5 标记、modernizr js 库,并且页面会验证这些是否重要。

编辑:我通过更改抽象的代码解决了我的问题(我只是比以前进一步抽象了一个父标签)。但是,我仍然很想知道究竟为什么会发生这个错误。有没有人可以阐明具体可能导致这种情况的原因?

4

4 回答 4

1

很可能不是 SSI 引起了任何问题。

HTML代码中的换行符导致IE插入无关空格,导致布局中断,这是完全可能的。

此外,当您将片段移动到包含时,请确保正确分隔代码。通过验证器运行 HTML 可能最容易检查这一点。

于 2011-01-03T20:57:48.017 回答
0

我遇到了类似的问题并修复如下。

我有这样的事情:

<div>
   <include>
</div>

并通过将其更改为此来修复它:

<div><include></div>
于 2011-01-03T21:02:12.677 回答
0

这个问题最终成为服务器如何解析 HTML 和 HTML5 标记的错误。无论出于何种原因,当我向 SSI 添加一个额外的标签集时,它就起作用了。

我的原始包含如下所示:

<header>
    <!--#Include File="/includes/header.shtm"-->
</header>

包含的文件是:

<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

但是当我从包含中取出所有 HTML5 标记时,如下所示,一切正常。我不确定这是否是旧版本的 apache 的问题或什么,但这样做可以解决所有问题。

<header>
  <nav>
    <!--#Include File="/includes/header.shtm"-->
  </nav>
</header>
于 2011-01-03T22:10:29.300 回答
0

可能是 UTF-8 的文件编码问题,在包含文件的开头插入 BOM 字符。我的解决方案是将包含文件保存为没有 BOM 签名的 UTF-8。

我注意到在 body 标记显示额外空间之后有 include 语句,但是在 include 语句周围添加(任何?)html 标记会隐藏它。我猜浏览器会在字符“内部”而不是开头时忽略字符。

我的特殊情况涉及 Visual Studio,但它出现了多种编辑器。也可以看看

于 2014-10-30T16:17:31.777 回答