Unfortunately, this may not be a valid Code-Golf question as it is likely Javascript only; however, since this is likely to be the only useful-in-the-real-world code-golf contest I'm going to go ahead and post it.
The Google Analytics Asyncronous Tracking snippet is used by many websites.
The script goes a little something like this:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
Winner will be determined by the shortest RAW DEFLATE (there is a difference between HTTP 1.1 DEFLATE (aka zlib) and RAW DEFLATE) compressed code by byte-count that will load and initialize Async Google Analytics on a page.
In the case of a tie, winner will be determined by raw character count. If it we still have a tie we'll decide by last edit/time submitted.
Some Rules:
- The
gaq || []
check is not required and should be removed. - must be protocol "aware" (http vs https).
- must not pollute the global namespace (except for the
_gaq
var). - must be copy-pastable to any (X)HTML document, i.e., not dependent on the page's markup.
- must work in all A-Grade browsers.
- This does NOT have to pass JSLINT or any HTML validators.
- must set the
async
flag. - must use this deflator for the byte count of the deflate-compressed output.
Tip:
- Understand the basics of the DEFLATE algorithm. And more importantly, LZ77 compression.
UDPATE 216/275
Since my original version has been beaten I'll go ahead and post it here:
Note: this has a bug where async gets set to false for all "http" requests
(function(d,t,g){_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];g=d.createElement(t);g.src=(g.async=location.protocol[5]?"//ssl":"//www")+".google-analytics.com/ga.js";(t=d.getElementsByTagName(t)[0]).parentNode.insertBefore(g,t)})(document,"script")