Chrome Inspector中的奇怪“”元素会导致布局问题

时间:2014-05-27 17:19:18

标签: html google-chrome playframework playframework-2.0 double-quotes

我遇到了Chrome的奇怪布局问题,这似乎是由源代码中不存在的元素引起的(""代码后直接<body>。)

看一下这个截图: Size of body element

body元素位于页面顶部。然而,页面的第一个内容元素(entries_col)的偏移量约为15px: Offset of first element

当然我已经检查了填充和边距 - 可以通过手动删除DOM Inspector中的“”元素(第二个屏幕截图中的红色圆圈)来解决问题。 我发现Chrome显示带引号的空白,但源代码如下所示:

</head><body><div id="entries_col">

有人可以告诉我如何摆脱页面内容上方的空行吗? (或者:“”来自哪里?)

谢谢!

1 个答案:

答案 0 :(得分:1)

好的,所以我找到了问题的原因。这是我用于此Web应用程序的Java Play Framework,但我想不到这会导致我的问题。

标题代码来自单独的文件(Scala视图模板),插入方式如下:

<head>
    <title>Logbook</title>
    @logbookContent.header()
</head>

虽然标题中的<meta><script>标记之间不存在任何文本字符,但HTML验证程序始终在<title>元素之外的标题部分中抱怨文本而不显示任何无效字符文本(感谢Felix Kling提供的验证提示)。

所以我尝试将标题代码直接移动到主页面,而不是在该位置呈现另一个文件。 Etvoilà,它有效。 Chrome中没有更多“”,页面布局如预期。

为了找到将标题代码放入我的页面的艺术之间的区别,我保存了两个(渲染的)网站并将它们上传到两个不同的Diff工具。两者都没有表现出任何差异。但后来我在一个Diff工具的输出中看到了一些奇怪的字符,导致Chrome插入“”:

<head><title>Logbook</title><meta http-e

很明显,渲染引擎确实插入了一些在Chrome或Notepad ++中不可见的无效(空白)字符,可能是因为它们支持Unicode而在线Diff工具不支持。

更新:这些奇怪的字符是UTF8 BOM,可以使用Notepad ++删除(将编码设置为“无BOM的UTF8”)