当前位置: 首页 > 知识库问答 >
问题:

HTML可以包含两个HEAD标签吗

叶恩
2023-03-14

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

标题。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>

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>

这样做是否有效?

共有3个答案

田向荣
2023-03-14

良好的响应@Gwenc37。您可以在任何其他标签中拥有任何标签,但最好始终遵守W3C标准和规范。在项目的后期,您可能会遇到HTML在浏览器中无法正确解析甚至更糟的情况。

为了安全起见,最好遵循W3C标准。这样你就不会出错。希望这有所帮助。

令狐灿
2023-03-14

按标准是无效的

相关部分:

4.2.1头部元素

类别:无。

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

你的第二个

颜哲彦
2023-03-14

这不是一个好的解决办法,但绝对行得通。

人们通常会在理论上回答这些问题,比如“不,因为它在标准上是无效的”。没错,事实并非如此。未来的浏览器可能不支持它,一些源代码解析器可能会感到困惑,HR / IT专家检查您的投资组合可能会认为您比Jon Snow知道的要少,以及各种坏事。从理论上讲。但它确实发生在现实世界中,浏览器并不愚蠢:他们知道你的意思,他们会同时使用头部标签并按预期工作。

这不仅仅是偶然的
他们有很好的理由:

1.头标签是可选的。(见文章下面的注释!)
浏览器甚至在它之外也接受类似头标签的内容,所以实际上他们完全忽略了标签本身。如果他们忽略了一个,他们可能也会忽略几个。

2.访客是珍贵的。< br >浏览器希望您享受时间。他们想向你展示他们在混乱中能写出的最好的页面。这是他们的意图,他们想让你知道互联网是有用的,而不是教你你最喜欢的网站有多糟糕。如果他们能发现html代码想要表达什么(而且结构中没有致命的歧义),他们会尽最大努力修复页面。

3.错误的标记容忍是一件事。< br >浏览器不仅仅是耐心和宽容,有时它们还会像杂技一样让你的东西工作。看看这可怕的混乱:

<!-- 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.

关于浏览器的容忍度,这里有更多超级丑陋的例子 - 确保你忘记了你回来后看到的一切!

所以是的,当然,原则是“做你浏览器的好朋友”,无论它多么巧妙的修复了你的错误。但是如果你在一个黑暗的地牢中醒来,周围都是饥饿的狮子,你唯一的出路就是使用两只

TLDR:实际上,两个head tags是有效的。

如果可能的话,现在请只吃一个。

正如@StanislavBerkov指出的那样,W3C和MDN都暗示了HEAD标签,这意味着最好完全保留头部标签。如果您有仅使用其中一个的标准选项,我不会推荐此方法,但是没有一个显然比使用两个要好。文档围绕该主题不是很清楚,因此请确保在主要浏览器中测试所有内容 - 但同样,在实践中,您不会遇到任何问题。

 类似资料:
  • 问题内容: 标签中可以包含哪些有效的html元素(如果有)? 问题答案: 内联元素(除其他外)可以包含其他内联元素和文本节点。锚点可以包含一个范围,该范围可以包含一个文本节点。 通常,块级元素可以包含内联元素和其他块级元素。通常,内联元素可以仅包含数据和其他内联元素。这种结构上的区别固有的思想是,块元素比内联元素创建“更大”的结构。 在其他的答案指出,你不能嵌套的在。

  • 问题内容: 我试图找出适当的Razor语法,以将特定* .cshtml的JavaScript文件与_Layout.cshtml中定义的所有其他包含文件一起放在head标签中。 问题答案: 您可以使用 命名节 。 _Layout.cshtml _SomeView.cshtml

  • 在邮件中,我想显示一个java变量: 在邮件模板中,我执行以下操作: 在邮件中,它转换为: 如何使变量得到很好的解释。 非常感谢。

  • 问题内容: 我想截断一些文本(从数据库或文本文件加载),但其中包含HTML,因此包含了标签,并且将返回较少的文本。然后,这可能导致标签未关闭或部分关闭(因此Tidy可能无法正常工作,并且内容仍然较少)。我如何基于文本截断(并且可能在到达表时停止,因为这可能会导致更复杂的问题)。 将导致: 我想要的是: 我怎样才能做到这一点? 虽然我的问题是有关如何在PHP中进行操作,但最好知道如何在C#中进行操作

  • 问题内容: 我需要匹配所有这些开始标签: 但不是这些: 我想出了这个,想确保我做对了。我只是捕捉到。 我相信它说: 找到一个小于,然后 查找(并捕获)az一次或多次,然后 找到零个或多个空格,然后 找到零次或多次贪婪的字符,除了,然后 寻找大于 我有那个权利吗?更重要的是,您怎么看? 问题答案: 尽管只有正则表达式的任意 HTML是不可能的,但有时使用它们来解析有限的已知 HTML集合是适当的。

  • 问题内容: 我的数据库存储产品信息,其中许多信息被组织成列表。我将数据加载到Angular中。 例如, 当我尝试将此数据加载到我的Angular应用程序中时,它会以文本形式呈现(即未解析)。我了解这可能是出于安全原因而发生的,但是有什么解决方法吗? 问题答案: 正如Damax在这里所说的那样: