Upcoming LunaMetrics Seminars
New York City, Aug 4-8 San Francisco, Aug 11-15 Los Angeles - Anaheim, Sep 8-12 Washington DC, Sep 22-26

Blogger Blogs, ga.js, and XHTML

  If you’re having trouble getting the new Google Analytics, ga.js code to work on
  your Blogger Blog, we have a quick and easy fix for you.

  Actually, this fix isn’t specific to Blogger or even Google Analytics for that matter. 
  To make your web pages XHTML-compliant, you should either do this on all of your
  scripts, or you should move your scripts to a separate file.

  Here’s an example: (Beware of smart quotes.  WordPress keeps changing my formatting automagically.)

<script type=’text/javascript’>
//<![CDATA[
var gaJsHost = (("https:" == document.location.protocol)
? "https://ssl." : "http://www.");
document.write("\<script src='" + gaJsHost
+ "google-analytics.com/ga.js' type='text/javascript'>\<\/script>" );
//]]>
</script>

<script type=’text/javascript’>
//<![CDATA[
var pageTracker = _gat._getTracker("UA-XXXXXXX-1");
pageTracker._initData();
pageTracker._trackPageview();
//]]>
</script>

See how the first line after each script tag, we have: //<![CDATA[

And right before closing each script tag, we have: //]]>

The forward slashes are JavaScript comment indicators for older browsers that don’t understand CDATA.  This post on About.com provides some additional information.  Note the author uses multiline comment characters rather than the // we use here.  Both methods will work just fine.

So what have we done?

  We told the browser’s validator to ignore our script by wrapping it in the CDATA
  tag.  So now Blogger and the W3C will happily accept your Google Analytics
  Tracking Code.

  – Jason Green
 

About

http://www.lunametrics.com/blog/2007/12/18/blogger-blogs-gajs-and-xhtml/

11 Responses to “Blogger Blogs, ga.js, and XHTML”

TheMacGuy says:

THANK YOU THANK YOU THANK YOU!
I’ve been looking for a way to get my new Google Analytics code to validate. The CDATA tag did the trick. I should have known.

[...] an Analytics Authorized Consultant. However, in all fairness, the exact fix I needed was written by Jason Green of LunaMetrics, who graciously allowed Mangold Sengers to reprint it. Thanks to [...]

John says:

[...]you should either do this on all of your scripts, or you should move your scripts to a separate file.[...]

If I want to use second option, how would I do that?

Jason Green says:

@John,

You can put the entire GA script into a second file, we’ll name it mygacode.js, and save that on your server.

*Make sure to remove all tags from mygacode.js. This file should just be straight JavaScript.*

Then, on the page where that script would normally show up, put the code below:


   <script src="mygacode.js"></script>

w3schools.com has a great tutorial here: http://www.w3schools.com/js/js_whereto.asp

I hope this helps.

- Jason Green

clyde says:

Which is right code for a Blogger blog?

Cand86 says:

Thank you for this, it’s wonderful!

Unfortunately, my Blogger blog tells me:

Your template could not be parsed as it is not well-formed. Please make sure all XML elements are closed properly. XML error message: Open quote is expected for attribute “{1}” associated with an element type “type”.

Would you happen to know what’s going on?

Great post …..
thanks for posting, keep posting

Adam says:

Thank you John, as i was facing this problem from many a days, i try to solve this, but its was not on that track where u make us understand….

Robin says:

nice, i can see this is very effective & helping, adam got solution from this, i am looking to get some good info about new windows format,

Incept Media says:

great post make easy to get come up this solution. i hope to have some of more in the future too