我正在使用腳本爲谷歌分析跨域跟蹤檢測跨域鏈接。原始腳本(xdomain.js)由Luna Metrics的優秀人員提供。這裏是我的修改,帽尖的腳本來這裏educardocereto在計算器上的修改建議,以便能夠在GATC setAllowAnchor(我的註釋行40,在控制檯錯誤第一點):針對xdomain.js跨域鏈接腳本的jQuery indexOf錯誤
var jQueryXD = jQuery.noConflict();
/* I added var because page loads 2 versions
of jquery - not the source of the problem.*/
function listenToClicks()
{
var domains=["domain1.com", "domain2.com"];
var fileTypes=[".pdf"];
jQueryXD('a').each(function(index) {
var link = jQueryXD(this);
var href = link.attr('href');
jQueryXD.each(fileTypes, function(i) {
if(jQueryXD(link).attr('href').indexOf(this)!=-1){ //this is line 40
valid = false;
jQueryXD(link).bind('click', function(c) {
c.preventDefault();
_gat._getTrackerByName()._trackEvent('Download', 'Click - ' + jQueryXD(link).attr('href'));
setTimeout('document.location = "' + jQueryXD(link).attr('href') + '"', 100);
});
}
});
var valid = false;
jQueryXD.each(domains, function(j) {
try
{
if((jQueryXD(link).attr('href').indexOf(this)!=-1)&&(window.location.href.indexOf(this)==-1)){
valid = true;
if (valid)
{
jQueryXD(link).bind('click', function(l) {
if(typeof(_gat)=="object"){
l.preventDefault();
if (jQueryXD(link).attr('target') != "_blank")
{ // _gaq.push(['_link',jQueryXD(link).attr('href')]);
_gaq.push(['_link',jQueryXD(link).attr('href'), true]); // mod
}
else
{
var tracker = _gat._getTrackerByName();
//var fullUrl = tracker._getLinkerUrl(jQueryXD(link).attr('href'));
var fullUrl = tracker._getLinkerUrl(jQueryXD(link).attr('href'), true); //mod
window.open(fullUrl);
}
}
});
}
}
}
catch(e)
{
//Bad A tag
}
});
var rootDomain = document.domain.split(".")[document.domain.split(".").length - 2] + "." + document.domain.split(".")[document.domain.split(".").length - 1];
if ((href.match(/^http/)) && (href.indexOf(rootDomain) == -1) && !valid) {
jQueryXD(link).bind('click', function(d) {
d.preventDefault();
_gat._getTrackerByName()._trackEvent('Outbound Link', href);
setTimeout('document.location = "' + href + '"', 100);
});
}
});
}
jQueryXD(document).ready(function() {
listenToClicks();
});
的從Chrome的JavaScript控制檯輸出:
Uncaught TypeError:
Cannot call method 'indexOf' of undefined xdomain-nfi-nfs-anchormod-noconflict.js:40
jQueryXD.each.valid xdomain-nfi-nfs-anchormod-noconflict.js:40
jQuery.extend.each jquery-1.2.6.min.js:21
(anonymous function) xdomain-nfi-nfs-anchormod-noconflict.js:39
jQuery.extend.each jquery-1.2.6.min.js:21
jQuery.fn.jQuery.each jquery-1.2.6.min.js:12
listenToClicks xdomain-nfi-nfs-anchormod-noconflict.js:35
(anonymous function) xdomain-nfi-nfs-anchormod-noconflict.js:100
jQuery.fn.extend.ready jquery-1.2.6.min.js:27
jQuery.extend.ready.jQuery.readyList jquery-1.2.6.min.js:27
jQuery.extend.each jquery-1.2.6.min.js:21
jQuery.extend.ready jquery-1.2.6.min.js:27
因此,至少它似乎沒有混合了兩個jQuery的實例。我也試過用jquery 1.7.1。我使用的是1.2.6,因爲腳本似乎已經在該版本上進行過測試。
我剛下載了GAS;哇 - 看起來這就是我現在要用的......最近有一個[LinkedIn post](http://www.linkedin.com/groupItem?view=&srchtype=discussedNews&gid=66386&item=91547917&type=member&trk=eml -anet_dig-b_pd-ttl-cn&ut = 0GksdAi443QR41)在Brian Web Clifton加入的高級Web度量組重新滾動跟蹤(我看到GAS也在這樣做)中。 – Conando 2012-02-05 00:15:26
GAS中有什麼需要注意的是用setAllowAnchor來切換到'#'分隔符? – Conando 2012-02-05 00:47:32
GAS在_setAllowHash方面非常聰明。如果您使用['_setAllowHash',true],那麼所有的xdomain鏈接都將被標記爲尊重這一點。如果您發現任何問題,請告訴我。這是我公司的一個項目,所以我們非常認真地對待錯誤並傾向於相當快地解決它們 – Eduardo 2012-02-05 08:34:36