在 </html> 结束标签后包含标记是否可以?

10

由于关闭html标记是可选的, 在关闭</html>标记后包含标记是否可以接受?

这样的例子存在于Phil Haack的RouteDebugger库中。 一些示例输出如下:

<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
</head>

<body>

<h2>Index</h2>

</body>
</html>
<!-- Extra content after closing html tag! -->
<html>
<div id="haackroutedebugger" style="background-color: #fff;">
    <style>
        #haackroutedebugger, #haackroutedebugger td, #haackroutedebugger th {background-color: #fff; font-family: verdana, helvetica, san-serif; font-size: small;}
        #haackroutedebugger tr.header td, #haackroutedebugger tr.header th {background-color: #ffc;}
    </style>
    <hr style="width: 100%; border: solid 1px #000; margin:0; padding:0;" />
    <h1 style="margin: 0; padding: 4px; border-bottom: solid 1px #bbb; padding-left: 10px; font-size: 1.2em; background-color: #ffc;">Route Debugger</h1>
    <div id="main" style="margin-top:0; padding-top:0">
        <p style="font-size: .9em; padding-top:0">
            Type in a url in the address bar to see which defined routes match it. 
            A {*catchall} route is added to the list of routes automatically in 
            case none of your routes match.
        </p>
        <p style="font-size: .9em;">
            To generate URLs using routing, supply route values via the query string. example: <code>http://localhost:14230/?id=123</code>
        </p>
        <p><label style="font-weight: bold; font-size: 1.1em;">Matched Route</label>: {controller}/{action}/{id}</p>

        <div style="float: left;">
            <table border="1" cellpadding="3" cellspacing="0" width="300">
                <caption style="font-weight: bold;">Route Data</caption>
                <tr class="header"><th>Key</th><th>Value</th></tr>
                    <tr><td>controller</td><td>Home&nbsp;</td></tr> <tr><td>action</td><td>Index&nbsp;</td></tr>
            </table>
        </div>
        <div style="float: left; margin-left: 10px;">
            <table border="1" cellpadding="3" cellspacing="0" width="300">
                <caption style="font-weight: bold;">Data Tokens</caption>
                <tr class="header"><th>Key</th><th>Value</th></tr>

            </table>
        </div>
        <hr style="clear: both;" />
        <table border="1" cellpadding="3" cellspacing="0">
            <caption style="font-weight: bold;">All Routes</caption>
            <tr class="header">
                <th>Matches Current Request</th>
                <th>Url</th>
                <th>Defaults</th>
                <th>Constraints</th>
                <th>DataTokens</th>
            </tr>
            <tr><td><span style="color: #c00">False</span></td><td>{resource}.axd/{*pathInfo}</td><td>(null)</td><td>(empty)</td><td>(null)</td></tr><tr><td><span style="color: #0c0">True</span></td><td>{controller}/{action}/{id}</td><td>controller = Home, action = Index, id = UrlParameter.Optional</td><td>(empty)</td><td>(empty)</td></tr><tr><td><span style="color: #0c0">True</span></td><td>{*catchall}</td><td>(null)</td><td>(null)</td><td>(null)</td></tr>
        </table>
        <hr />
        <h3>Current Request Info</h3>
        <p>
            AppRelativeCurrentExecutionFilePath is the portion of the request that Routing acts on.
        </p>
        <p><strong>AppRelativeCurrentExecutionFilePath</strong>: ~/</p>
    </div>
</div>

我注意到他追加的标记以<html>标签开头。这个标签的存在是否会验证此内容的位置?

1
+1 另一个(或更好的)问题是为什么Phil的库会这样做。看起来很奇怪。 - David Hoerster
我认为他这样做是因为这样就不必添加任何引导代码来使其工作。 - John Nelson
此外,他的路由调试器是一种诊断工具,而不是生产功能。当您进行调试时,有效的标记语言并不是一个很大的问题。 - John Nelson
2个回答

10

不,这并不好,但是浏览器对于糟糕的HTML非常宽容。

请尝试使用http://validator.w3.org/检查文档是否为有效的HTML(实际上不是有效的HTML)。


2

良好格式的页面(正确的标签顺序、开闭合)加载速度更快,使最终用户更加满意。使用正确的HTML,最好是XHTML,是一个好习惯和礼貌。这样做,您将赢得朋友并影响人们。


XHTML从未离开孵化器 :} - user2864740
格式良好的文档总是胜出的。不这样做?浏览器会做出选择。而且它们可能很糟糕。 - ncmathsadist

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