【问题标题】:#include file inserts in body not head#include 文件插入正文而不是头部
【发布时间】:2013-08-29 12:44:39
【问题描述】:

我有以下 html 页面,它引用了我的通用头部内容的包含文件。但是,不是将 'head.html' 的内容插入到 head 元素中,而是将其添加到 body 元素中。

我没有脚本错误。这发生在 FF、Chrome 或 IE 中。我已经尝试从 head.html 中删除所有内容,除了单个跟踪,它仍然包含在正文中。是否有另一个框架会干扰头部的渲染,我认为它只是获取包含文件并将其转储到它被引用的确切位置,所以这对我来说是如何发生的似乎很奇怪。

tia.


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--#include file="includes/head.html" -->

{ rest of non-generic head content }

 </head>

  <body class="animated fadeIn" style="" id="users">  ..............

【问题讨论】:

  • 您使用的是Server Side Includes,顾名思义,它是一种与浏览器无关的服务器端技术。我不知道你的网络服务器是什么(或者即使你有一个),但第一个调试步骤是按 Ctrl+U 以查看服务器生成的 HTML。
  • 我在自己的网站上进行了快速测试,您的示例在这里运行良好。所以肯定有其他地方出了问题,你没有表现出来的东西。它是文件扩展名是.shtml 的标准设置,还是您更改了服务器设置以允许所有扩展名?还有,head.html的内容是什么?
  • 是的,这是一个 .shtml 文件,由 IIS 7 提供服务。head.html 的内容主要只是样式表,但无论文件的内容如何,​​这种行为都会发生(即,如果我输入 ' hello' 插入身体而不是头部。
  • @ÁlvaroG.Vicario - 当然这是第一步,这就是我知道问题所在!
  • 好吧,你不会相信这里有多少用户忽略了这一点,或者检查生成的 DOM 树(使用 Firebug 或 Chrome 控制台)而不是 HTML 源代码。

标签: html iis-7 ssi


【解决方案1】:

嗯,那是纯粹的邪恶。

发现包含文件被编码为 UTF-8,这破坏了正确的 SSI 行为。 将文件更改为 ANSI 修复了它。

【讨论】:

  • 我知道文件中间的 UTF-8 BOM 会混淆浏览器,但令人难以置信的是它会使服务器输出不同步。嗯,这是为了回报。
  • 哈哈,“UTF-8 BOM 是邪恶的”的另一个论据。无论如何,但我可以想象一个 BOM,以 ZWNBSP 为幌子,对浏览器来说算作非空白,因此它不应该在头部,并且浏览器在插入之前结束头部并隐式启动正文它。
猜你喜欢
  • 1970-01-01
  • 2018-09-07
  • 2019-03-02
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 2018-03-30
  • 2017-06-03
相关资源
最近更新 更多