很多情况下,我们需要将ga直接加载一个a标签上,通过οnclick="pageTracker._trackPageview('ga-key');"。
这种方式其实会丢掉很多数据。当用户点击链接,ga请求还没发出就跳转了,此时http请求会被abort掉。为了改善这点,仅仅是改善,做不到百分百杜绝,我们可以考虑将链接跳转延迟。
代码如下://保障google analysis 发送率
demo:
<a href="http://g.cn" target="_blank" οnclick="return pageView(['key1','key2'], event);"><h1>google analysis</h1></a>
/** * 保障google analysis 发送率, 支持按ctrl键打开新窗口 * @param key{String|Array} 支持接受单个或多个ga-key * @param event{Event} 事件对象 * @returns {Boolean} */ pageTracker && (pageView = (function (T, L, W, toString) { var DELAY = 70, track = T._trackPageview; return function (ga, evt) { evt = evt || W.event; var src = evt.target || evt.srcElement, len; if(toString.call(ga)=="[object Array]"){ len = ga.length; ga.reverse(); while(len --){ track(ga[len].toString()); } }else{ track(ga.toString()); } setTimeout(function () { L.href = src.getAttribute('href'); }, DELAY); return evt.ctrlKey; } })(pageTracker, location, window, Object.prototype.toString));