Server Side Comments or how to automatically remove HTML/JavaScript comments from websites

Server Side Comments or how to automatically remove HTML/JavaScript comments from websites

  • Comments 2

One difference between good and bad code are comments. Good programmers tend to comment their code to make it readable for themselves (the next day ;-) ) or for other programmers (*).

There are situations though where one doesn't want comments to show up - like in an ASP.NET Web Application. Imagine the following simple app.

<head runat="server">

    <title>Untitled Page</title>

    <script type="text/javascript">

        // This function does something

        // incredible :-)

        function DoSomethingIncredible() {

            alert('Hallo');

        }

    </script>

</head>

<body onload="DoSomethingIncredible()">

    <form id="form1" runat="server">

    <div>

   

        <asp:Label ID="Label1" runat="server" Text="Label" /><br />

        <!--

            Don't need this currently but

            am not sure if I need it in

            the future... You get my point ;-)

            <asp:Label ID="Label2" runat="server" Text="Label" />

        -->

    </div>

    </form>

</body>

Unfortunately the comments will be send down to the client together with the remaining markup.

<head>
<title>
 Untitled Page
</title>
    <script type="text/javascript">
        // This function does something
        // incredible :-)
        function DoSomethingIncredible() {
            alert('Hallo');
        }
    </script>
</head>
<body onload="DoSomethingIncredible()">
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJOTAxMzgwODE5ZGQvR1v+z54Nn929OgLm6cscsg/+iQ==" />
</div>     <div>
   
        <span id="Label1">Label</span><br />
        <!--
            Don't need this currently but
            am not sure if I need it in
            the future... You get my point ;-)
            <span id="Label2">Label</span>
        -->
    </div>
    </form>
</body>

Fortunately ASP.NET supports a little known feature called “server-side comments” (<%-- --%>) which removes comments on the server. Check out the enhanced code...

<head runat="server">

    <title>Untitled Page</title>

    <script type="text/javascript">

        <%--

        // This function does something

        // incredible :-)

        --%>

        function DoSomethingIncredible() {

            alert('Hallo');

        }

    </script>

</head>

<body onload="DoSomethingIncredible()">

    <form id="form1" runat="server">

    <div>

   

        <asp:Label ID="Label1" runat="server" Text="Label" /><br />

        <%--

            Don't need this currently but

            am not sure if I need it in

            the future... You get my point ;-)

            <asp:Label ID="Label2" runat="server" Text="Label" />

        --%>

    </div>

    </form>

</body>

...together with the new output (behold the missing comments...). Pretty sweet, eh? 

<head><title>
 Untitled Page
</title>
    <script type="text/javascript">
       
        function DoSomethingIncredible() {
            alert('Hallo');
        }
    </script>
</head>
<body onload="DoSomethingIncredible()">
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJODExMDE5NzY5ZGTf9XGSwEVcluDmIxIb9pffNJ3tXg==" />
</div>     <div>
   
        <span id="Label1">Label</span><br />
       
    </div>
    </form>
</body>

Enjoy!

   Daniel

* O.K. Fair enough. This statement only holds true for the somewhat good programmers. The really 1337 programmers naturally don't need no 1@m3 comments ;-)

Leave a Comment
  • Please add 6 and 2 and type the answer here:
  • Post