【发布时间】:2010-10-18 17:44:38
【问题描述】:
很遗憾,这可能不是一个有效的 Code-Golf 问题,因为它可能只是 Javascript;但是,由于 这可能是唯一在现实世界中有用的代码高尔夫比赛 我将继续发布它。 em>
Google Analytics Asyncronous Trackingsn-p 被许多网站使用。
脚本有点像这样:
<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>
获胜者将由最短的 RAW DEFLATE(HTTP 1.1 DEFLATE(又名 zlib)和 RAW DEFLATE 之间存在差异)按字节数压缩的最短代码决定,该代码将加载和初始化异步 Google Analytics在页面上。
在平局的情况下,获胜者将由原始字符数决定。如果我们仍然有平局,我们将根据最后一次编辑/提交时间来决定。
一些规则:
gaq || []检查不是必需的,应该被删除。- 必须“感知”协议(http 与 https)。
- 不得污染全局命名空间(
_gaq变量除外)。 - 必须可复制粘贴到任何 (X)HTML 文档,即不依赖于页面的标记。
- 必须在所有A-Grade browsers中工作。
- 这不必须通过 JSLINT 或任何 HTML 验证器。
- 必须设置
async标志。 - 必须使用 this deflator 作为 deflate 压缩输出的字节数。
提示:
- 了解DEFLATE algorithm 的基础知识。更重要的是,LZ77 压缩。
UDPATE 216/275
由于我的原始版本已被击败,我将继续将其发布在此处:
注意:这有一个错误,即所有“http”请求的 async 都设置为 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")
【问题讨论】:
-
我只是删除 code-golf 标签。这实际上是“最好的最小代码”的应用程序,因此它与解决您的问题直接相关(如果您实际上将其声明为问题)。它不应该是关于“获胜”;就像许多其他问题一样,接受的答案将是最接近满足您的要求/符合您的标准的答案。
-
“必须设置
async标志”是为了什么?我认为动态添加的脚本不会阻止那些浏览器。 -
async 是一个 HTML5 属性,目前可能只有 firefox 3.6 支持:stackoverflow.com/questions/1834077/…
-
@matyr:我实际上不确定...我只是添加了它,因为我在某处读到了为什么它首先被包含...一些关于未来实现如何处理它的信息。
-
动态添加的脚本不会在除 Firefox 和 Opera 之外的所有浏览器中被阻止。为这些浏览器添加了 async 标签。不过目前只有 Firefox 支持它。
标签: javascript google-analytics code-golf