不幸的是,这可能不是一个有效的Code-Golf问题,因为它可能只是Javascript; 然而,由于 这可能是现实世界中唯一有用的代码 - 高尔夫比赛, 我将继续发布它.
在谷歌Analytics(分析)Asyncronous跟踪片段被许多网站使用.
脚本有点像这样:
获胜者将通过最短RAW DEFLATE被确定(有是 HTTP 1.1 DEFLATE(又名ZLIB)和RAW DEFLATE之间的差)由字节数压缩代码将加载和在页面上初始化异步谷歌分析.
在平局的情况下,获胜者将由原始字符数确定.如果我们还有领带,我们将根据提交的最后编辑/时间来决定.
一些规则:
该gaq || []
检查是不需要的,应该被删除.
必须是协议"意识到"(http vs https).
不得污染全局命名空间(_gaq
var 除外).
必须可复制到任何(X)HTML文档,即不依赖于页面的标记.
必须适用于所有A级浏览器.
但这不是必须通过的JSLint或任何HTML验证.
必须设置async
标志.
必须使用此平减器来确定压缩压缩输出的字节数.
小费:
了解DEFLATE算法的基础知识.更重要的是,LZ77压缩.
由于我的原始版本已被打败,我将继续并在此处发布:
注意:这有一个错误,其中所有"http"请求的异步设置为false
(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")
some.. 7
更新了在FF3.6,Opera10,Chrome6,MSIE8中测试的版本:
194/270:使用异步,缓存getElementsByTagName
(_gaq=document.createElement("script")).src=(/^....s/.test(location)?"//ssl":"//www")+".google-analytics.com/ga.js",(_gaq.a=_gaq.async=document.getElementsByTagName("script")[0]).parentNode.insertBefore(_gaq,_gaq.a),_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]]
192/297:使用异步,没有缓存
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',_gaq.async=document.getElementsByTagName('script')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName('script')[0]),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
189/259:没有异步,缓存了getElementsByTagName
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',(_gaq.a=document.getElementsByTagName('script')[0]).parentNode.insertBefore(_gaq,_gaq.a),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
188/286:没有异步,没有缓存
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',document.getElementsByTagName('script')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName('script')[0]),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
184/242,没有async,appendChild(不需要缓存),如果它在任何地方都受支持,则不知道
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',document.getElementsByTagName('script')[0].parentNode.appendChild(_gaq),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
积分:
卡萨布兰卡:/^https/.test(location)
matyr:相对路径,语句之间的逗号,async的赋值
some:没有_gaq的匿名函数和用法,getElementsByTagName的非缓存,移动async的赋值,/^....s /
大卫默多克下降type="text/javascript"
此外,如果您使用"引用标记属性" ,更改'
为"
可以改进HTML源中的压缩"
.
有关更多信息,请参阅此帖子的评论
由于这篇文章现在是社区维基和接受的答案,我删除了我的第一次尝试(如果您感兴趣,可以在修订历史中找到它们)并且只能看到最新版本.有关详细信息,请参阅此帖子中的评论./ 一些
更新了在FF3.6,Opera10,Chrome6,MSIE8中测试的版本:
194/270:使用异步,缓存getElementsByTagName
(_gaq=document.createElement("script")).src=(/^....s/.test(location)?"//ssl":"//www")+".google-analytics.com/ga.js",(_gaq.a=_gaq.async=document.getElementsByTagName("script")[0]).parentNode.insertBefore(_gaq,_gaq.a),_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]]
192/297:使用异步,没有缓存
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',_gaq.async=document.getElementsByTagName('script')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName('script')[0]),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
189/259:没有异步,缓存了getElementsByTagName
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',(_gaq.a=document.getElementsByTagName('script')[0]).parentNode.insertBefore(_gaq,_gaq.a),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
188/286:没有异步,没有缓存
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',document.getElementsByTagName('script')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName('script')[0]),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
184/242,没有async,appendChild(不需要缓存),如果它在任何地方都受支持,则不知道
(_gaq=document.createElement('script')).src=(/^....s/.test(location)?'//ssl':'//www')+'.google-analytics.com/ga.js',document.getElementsByTagName('script')[0].parentNode.appendChild(_gaq),_gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]
积分:
卡萨布兰卡:/^https/.test(location)
matyr:相对路径,语句之间的逗号,async的赋值
some:没有_gaq的匿名函数和用法,getElementsByTagName的非缓存,移动async的赋值,/^....s /
大卫默多克下降type="text/javascript"
此外,如果您使用"引用标记属性" ,更改'
为"
可以改进HTML源中的压缩"
.
有关更多信息,请参阅此帖子的评论
由于这篇文章现在是社区维基和接受的答案,我删除了我的第一次尝试(如果您感兴趣,可以在修订历史中找到它们)并且只能看到最新版本.有关详细信息,请参阅此帖子中的评论./ 一些