views:

658

answers:

2

I am working on a ASP application and the code, template and files are organized in a way that does not allow me to alter anything outside the body tag. So I am thinking about inserting the meta tags inside the body -- like this:

<!-- FEW ASP INCLUDES -->
<html>
    <head>
    <!-- FALLBACK TITLE AND DESCRIPTION -->
    <title>Default Title</title>
    <meta name="description" content="Default Description">
</head>
<body>
    <!-- SOME HTML MARKUP -->
    <div class="dynamic-content">
        <!-- InstanceBeginEditable name="dynamic-content" -->
        <!-- THIS IS WHERE I CAN WRITE ASP CODE -->
        <title><%= Page.Meta.GetTitle( yada, yada ) %></title>
        <meta name="description" content="<%= Page.Meta.GetDescription( yada, yada ) %>">
        <!-- InstanceEndEditable -->
    </div>
    <!-- SOME MORE HTML MARKUP -->
</body>
</html>

I am wondering how good it is to put meta tags inside the body of an HTML document. How does it affect:

  1. search engines
  2. browsers
+4  A: 

I wouldn't do it. That's not where those tags go, and the search engines might view it as spamming. If you can reorganize the master page you can always add a contentplaceholder up in the head section. I've done it trivially with:

<asp:ContentPlaceHolder ID="HeadTags" runat="server" />

This way you can add whatever content you like in the head section back on your page:

<asp:Content ID="Whatever" ContentPlaceHolderID="HeadTags" runat="server" >

<meta ... >

</asp:Content>

John Lockwood
Not a Classic ASP solution though
AnthonyWJones
No, probably not. But as crappy answers go it not only works in production, it has four votes.
John Lockwood
Classical ASP solution... that's the essence of the question!
Salman A
+2  A: 

This is of course invalid as per HTML4.01. META tags are only allowed within HEAD (just like, say, TITLE) so by putting it into a BODY, you're essentially creating an invalid markup.

From the cursory tests, it seems that some browsers (e.g. Firefox 3.5 and Safari 4) actually put these elements into HEAD when creating a document tree. This is not very surprising: browsers are known to tolerate and try to interpret all kinds of broken markup.

Having invalid markup is rarely a good idea. Non-standard handling by browsers might lead to various hard-to-pin rendering (and behavioral) inconsistencies. Instead of relying on browser guessing, it's best to follow a standard.

I don't know how search engines react to such tag soup, but I wouldn't risk experimenting to find out :) Perhaps they only parse HEAD tag for certain information and will skip your BODY-contained tags altogether. Or maybe they consider these to be some malicious gambling attempts and black-list pages containing such markup. Who knows.

The bottom line it to avoid this whenever possible.

kangax
Sigh, I'll have re-arrange all code. Any suggestions that help make this process less painful will be appreciated.
Salman A