我喜欢干净的代码,我相信大多数开发人员都会这么做。我遇到的问题是,我的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>
和<link>
标记都在一行 AND <title>
标记包含换行符。
以下是Title:
的default.aspx页面的HTML<asp:Content ID="title" runat="server" ContentPlaceHolderID="title">
Login
</asp:Content>
我的假设是因为<meta>
代码和<link>
代码是自封闭的,<script>
代码以</script>
结尾。
解决此问题的唯一方法是使用<meta>
关闭我的</meta>
代码。关闭元标记和链接标记时,哪种方式被视为标准?或脚本标签?
提前感谢您的帮助!
答案 0 :(得分:1)
如果您真的想要遵循规范,link
和meta
是void
元素,那么 {1}}是HTML5,您可以使用自我标记DOCTYPE
,但默认方式是仅将其用作开始标记,这是<meta ..../>
元素 don的正确符合用法我需要一个结束标记(empty
,正如我所说,不能拥有它。)
脚本不是void
元素,而是void
元素,因此您只能使用开始标记,自结终标记或开始和结束标记。
请注意,对于具有类型为空的内容模型的元素,实际上意味着可能为空,而不是它应该;这可能就是所谓的empty
。
至于为什么asp解析器对你的metas这样做,我想不出一个原因。我理解您对干净代码的偏好,但如果它有任何帮助,请尝试至少认为该错误会导致文件大小减少:o)
请记住,所有这些都适用于HTML5,XHTML以不同的方式处理void和空模型。