Is it okay to include markup after the closing </html> tag?
Since closing the html tag is optional, is it okay to include markup after a closing </html>
tag?
An example of this exists with Phil Haack's RouteDebugger library. Some sample output looks like this:
<!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开发者_JAVA技巧 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 </td></tr> <tr><td>action</td><td>Index </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>
I notice that his appended markup begins with an <html>
tag. Does the presence of this tag somehow validate the location of this content?
No, it's not OK, but browsers are very forgiving with bad HTML.
Try http://validator.w3.org/ to see if a document is valid HTML or not (it isn't).
Pages that are well-formed (correct sequencing, opening and closing of tags) load faster and make end-users happier. It is good taste and good manners to use proper HTML, preferably when possible XHTML. Do this, and you will win friends and influence people.
精彩评论