HTML标题部分在正文中出现并带有空格。

4

在更新后,我的着陆页突然崩溃了。在Chrome的检查元素中,头部部分为空,所有头部项目都放在body标记中。但是当我查看HTTP响应时,一切都是正确的。

此外,在正文部分开头还有一个空格,这破坏了布局。您可以在此处查看:http://www.sporapp.com/

顺便说一句,在本地运行正常。


那么你是如何生成你的HTML的呢? - Zoltan Toth
将原始HTML代码嵌入PHP文件中,然后使用“include_once”命令引用“indexView.php”文件。 - Fatih Donmez
@tylerdurden 是的,有的..看一下你的http://www.sporapp.com/索引页面的源代码..就在`<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"`行之前,你有一个换行符。 - Pebbl
嗯,那么看起来你可能有两种情况之一发生了...(1) 在你所有的php包含文件中,有些文件有<?打开或?>关闭php标签,并且在*(打开)或之后(关闭)*有空格...这很难追踪...支持正则表达式的搜索应用程序可能会帮助你找到并删除它们。(2) 你的索引文件开头可能有损坏的BOM(字节顺序标记)...虽然这种情况不太可能发生,但通常是由于在操作系统或应用程序之间错误地编码传输文件所导致的。 - Pebbl
1
将标记发送到远程服务器可以在我的经验中产生很大的差异。无论如何,根据另一个帖子的描述 - 实际上看到了一个无法打印的字符 - 这更可能是BOM问题。我已经在下面添加了一条评论,说明如何尝试解决它...另一个问题是,错误编码的BOM可能不在您的索引文件中(就像空格问题一样),而是在其他包含文件中。 - Pebbl
显示剩余7条评论
3个回答

4
我发现在DOCTYPE声明之前的响应中有一些空行。在从Chrome网络选项卡中复制/粘贴HTML后,我发现在doctype之前右侧有一些?符号(看起来像是Notepad ++无法显示某些原因的符号)。在您的服务器上使用vim检查该文件。假设您会在doctype之前找到一个符号,而您的本地计算机上没有这个符号。删除它并假设它能够正常工作(至少在我的计算机上,head被正确解析)。
图片描述:https://istack.dev59.com/F9L2A.webp 问答作者补充道:感谢Mercurial,它破坏了编码并导致了BOM。还有一个PHP文件,它包含“?”然后是空格。更新损坏的文件并删除空格,最终就可以了 :) ..

我正在使用 Aptana 编辑器,但无法看到它,为了确保,我复制了所有文本并重新创建了文件,但没有成功。 - Fatih Donmez
好的,我刚刚检查了一下。我仍然得到相同的符号。尝试更改编辑器。也许aptana不会显示它(与notepad++相反,后者将未知符号显示为“?”)。 - Viktor S.
1
另外,尝试在文档类型声明中删除 < 并按几次退格键,重新输入 <,然后再保存文件。最好在 vim 中完成。 - Viktor S.
另外,请检查文件格式。可能是带有BOM的utf8格式。不确定浏览器如何处理BOM。 - Viktor S.
好的,谢谢大家。问题已经解决了,原因是BOM和空格的问题。关于BOM,感谢Mercurial,它破坏了编码并引起了BOM的出现。还有一个php文件,在?>之后跟着一些空格。在修复了这个损坏的文件并删除了空格之后,最终问题解决了 :) ..不管怎样,如果你们中的任何人更新了答案,我可以将其标记为正确的。 - Fatih Donmez
显示剩余3条评论

1

0

只需删除在开头的body标签后面的空行即可 :)


奇怪!因为在Chrome中检查元素时,只是将它删除后它就起作用了。 - HasanAboShally
当您在Chrome检查器中删除文本时,它只是被移除,这很正常。但问题在于实际代码中没有空格,这一点在响应中是看不到的。 - Fatih Donmez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接