HTML可以包含两个HEAD标记

sur*_*shd 20 html html5 jsp

在我的Web应用程序中,我得到了包含默认标头内容的Header.jsp文件.我在所有其他页面中使用jsp:include标签将其包含在每个页面的body标签内.

Header.jsp包含自己的HEAD标记,用于指定默认元标记,链接样式表,脚本和一些HTML元素.同时,我将在所有其他单个页面中使用另一组HEAD标记来定义标题,页面特定脚本和样式表.

例如:

header.jsp中

<head>
   <link rel="shortcut icon" href="<%=request.getContextPath()%>/images/favicon.ico" type="image/x-icon" />
   <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
   <script src="js/jquery.js"></script>
   <link rel=stylesheet type="text/css" href="dashboard.css" >
</head>
<h2>Dashboard</h2>
Run Code Online (Sandbox Code Playgroud)

main.jsp中

<!DOCTYPE html> 
<html>
   <head>
      <title>Main page</title>
      <script src="main.js"></script>
   </head>
   <body>
      <jsp:include page="Header.jsp" flush="true" />
      .....
      other HTML contents specific to main page
      .....
   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这样做是否有效?

dke*_*ner 55

让我用"是和否"来扩展答案.

人们通常在理论上回答这些问题,比如"不,因为它不符合标准".没错,事实并非如此.未来的浏览器可能不支持它,一些源解析器可能会混淆,HR/IT专家检查您的投资组合可能认为您比Jon Snow知道的更少,以及各种不好的事情.从理论上讲.

然而.

是的,它确实发生在现实世界中 - 是的,几乎所有浏览器都以同样的方式对待这种情况:它们接受两个头标记并按预期工作.这有三个很好的理由:

1.头标签是可选的.浏览器甚至在其外部接受标题内容,因此实际上它们完全忽略了标签本身.如果他们忽略了一个,他们也可能会忽略几个.

浏览器希望你享受你的时间.他们希望向您展示他们可以从他们所拥有的混乱中组成的最佳页面. 这是他们的意图,他们想告诉你互联网有效,而不是教你最喜欢的网站有多糟糕.如果他们能够找出html代码想要表达的内容(并且结构中没有致命的歧义),他们将尽力修复页面.

3.糟糕的标记容差是一件事.浏览器不只是耐心和宽容,但有时他们会做杂技动作来让你的东西工作.看看这个可怕的烂摊子:

<!-- no doctype! -->
<!-- no HTML tag! we're all gonna die! -->
<head>
    <style>
        body {background:#002233;}
    </style>
</head>
<head><!-- let's twist again! -->
    <style>
        body {color:white}
    </style>
<!-- we didn't even close the second one!! -->

See this text?<br>
With the background AND color properly set?<br>
<br>
Your browser's quite a badass.
Run Code Online (Sandbox Code Playgroud)

关于浏览器容差,这里有更多丑陋的例子 - 确保你忘记了你回来时看到的一切!)

所以是的,当然,原则是"成为您浏览器的好朋友",无论它如何巧妙地修复您的错误.但是,如果你在一个黑暗的地牢中醒来,周围有饥饿的狮子,你唯一的出路是使用两个<head>标签 - 好吧,不要犹豫!它没有破坏语法,它不是严重违反HTML5规则 - 它只不过是一种方便的欺骗.并且不要因为非标准的,非整洁的网站繁荣更加普遍的普遍神话:人们通常只是不确定并且想要保持安全.通常情况下,他们将地狱描述为验证者失败的网络作者所在的地方.

TLDR:在实践中,两个头标签工作.

现在请尽可能只有一个.

  • 可能是我读过的关于SO的最好写的答案.信息性和娱乐性,但仍然简洁. (4认同)
  • 肯定的最佳答案 (2认同)

mvi*_*lar 11

根据标准,它无效

相关部分:

4.2.1头部元素

分类:无.

可以使用此元素的上下文:作为html元素中的第一个元素.

你的第二个<head>元素不是html文档中的第一个元素.

  • 从技术上讲,您引用的文档中写道:"这是一份草稿文档,可能随时被其他文档更新,替换或废弃.除了正在进行的工作之外,引用这个文档是不合适的."但是所有HTML规范和草案中的原则都是相同的:每个文档只允许一个`head`元素. (2认同)