1

我喜欢干净的代码,我相信大多数开发人员都喜欢。我遇到了一个问题,我的 Meta 标签都出现在一行上,而不是单独的行上。

我有一个名为“client.master”的文件,这是标题的代码:

<head runat="server">
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
   <meta name="apple-mobile-web-app-capable" content="yes" />
   <meta name="apple-mobile-web-app-status-bar-style" content="default" />
   <meta name="format-detection" content="telephone=no" />

   <script src="/scripts/script1.min.js" type="text/javascript"></script>
   <script src="/scripts/script2.min.js" type="text/javascript"></script>

   <link rel="apple-touch-icon" href="/images/home-screen.png" />
   <link rel="apple-touch-startup-image" href="/images/home-startup.png" />
   <link href="/css/thirdparty/xxxxx.min.css" type="text/css" rel="stylesheet" />
   <link href="/css/design.css" type="text/css" rel="stylesheet" />

   <asp:ContentPlaceHolder ID="headContent" runat="server">
   </asp:ContentPlaceHolder>
</head>

这看起来非常干净和漂亮。但是,当我查看页面的源代码时,输​​出会在一行 中显示<meta>标签和标签。脚本标签不是.<link>

这是我的代码的输出:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><meta name="apple-mobile-web-app-capable" content="yes" /><meta name="apple-mobile-web-app-status-bar-style" content="default" /><meta name="format-detection" content="telephone=no" />

   <script src="/scripts/script1.min.js" type="text/javascript"></script>
   <script src="/scripts/script2.min.js" type="text/javascript"></script>

   <link rel="apple-touch-icon" href="/images/home-screen.png" /><link rel="apple-touch-startup-image" href="/images/home-startup.png" /><link href="/css/thirdparty/xxxxx.min.css" type="text/css" rel="stylesheet" /><link href="/css/design.css" type="text/css" rel="stylesheet" />

   <title>
      Login
</title></head>

请注意,<meta>and<link>标签都在一行上并且<title>标签有换行符。

这是标题的 default.aspx 页面的 HTML:

<asp:Content ID="title" runat="server" ContentPlaceHolderID="title">
   Login
</asp:Content>

我的假设是因为<meta>标签和<link>标签是自封闭的,<script>标签以</script>.

解决此问题的唯一方法是<meta>使用</meta>. 关闭元和链接标签时,哪种方式被视为标准?还是脚本标签?

在此先感谢您的帮助!

4

1 回答 1

1

如果您真的想遵循规范,link并且metavoid元素,则它们不能有结束标签,如果您DOCTYPE是 HTML5,则可以使用自闭合标签<meta ..../>,但默认方式是仅将其用作开始标签,即作为empty元素的正确符合使用不需要结束标签(void正如我所说的那样,不能拥有它)。

脚本不是一个void元素,而是一个元素,empty因此您可以只使用开始标签、自闭合标签或同时使用开始和结束标签。

请注意,对于具有空类型内容模型的元素,实际上意味着它可能是空的,而不是它应该是空的;那可能就是它的名字void

至于为什么asp解析器对你的元数据这样做,我想不出一个原因。我理解您对干净代码的偏好,但如果它有任何帮助,请尝试认为至少该错误会导致文件大小减小:o)

请记住,所有这些都适用于 HTML5,XHTML 以不同的方式处理 void 和 empty 模型。

于 2013-07-04T19:24:12.727 回答