Dav*_*och 16 javascript cookies google-analytics monkeypatching httpcookie
更新 http://jsfiddle.net/musicisair/rsKtp/embedded/result/
Google Analytics会设置4个Cookie,这些Cookie将与该域的所有请求一起发送(并设置其子域).据我所知,没有服务器实际上直接使用它们; 它们只__utm.gif
作为查询参数发送.
现在,显然Google Analytics会对其值进行读取,写入和操作,并且需要将其用于GA跟踪脚本.
所以,我想知道的是,是否有可能:
__utm*
后将cookie 重写到本地存储ga.js
ga.js
运行后删除它们ga.js
读取之前,将cookie从本地存储重写回cookie表单或者,猴子补丁ga.js
在开始cookie读/写部分之前使用本地存储.
显然,如果我们想要删除__utm*
cookie 那么远,我们也希望使用Async的分析变体.
我猜这次投票是因为我没有问一个问题.DOH!
我的问题是:
它可以如上所述完成吗?
如果是这样,为什么还没有这样做?
我有一个默认的HTML/CSS/JS
样板模板,可以通过YSlow,PageSpeed和Chrome的审核获得近乎完美的分数.我真的在寻找一种方法来在支持本地存储的浏览器中从Google Analytics中挤出剩余的cookie字节.
Elm*_*mer 18
用这个:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
if(window.localStorage) {
ga('create', 'UA-98765432-1', 'www.example.com', {
'storage': 'none'
, 'clientId': window.localStorage.getItem('ga_clientId')
});
ga(function(tracker) {
window.localStorage.setItem('ga_clientId', tracker.get('clientId'));
});
}
else {
ga('create', 'UA-98765432-1', 'www.example.com');
}
ga('send', 'pageview');
Run Code Online (Sandbox Code Playgroud)
首先,我检查是否localStorage
支持.如果支持,则该'storage': 'none'
选项将禁用cookie.现在我们可以从localStorage设置clientId.如果它为空,Google Analytics会为我们生成一个新的.我们在跟踪器加载后将新的(或现有的)clientid保存在localStorage中.
如果localStorage
不受支持,我只使用常规分析方法.初始化后,我发送一个pageView通过ga('send', 'pageView')
.
另外,看看这个插件:http://plnkr.co/MwH6xwGK00u3CFOTzepK