Sun
10
Sep '06
好长没有继续了,惭愧惭愧。暂时放上加了注释的代码,还没有完工。
代码中加入了baidu,就是其关键字功能应该可以支持百度了。不过中文有无问题,尚未知道。稍后实验后才知。
9.12 Update
确实是可以的。
//-- Google Analytics Urchin Module//-- Copyright 2005 Google, All Rights Reserved.
//-- Urchin On Demand Settings ONLYvar _uacct=""; // set up the Urchin Accountvar _userv=1; // service mode (0=local,1=remote,2=both)
//-- UTM User Settingsvar _ufsc=1; // set client info flag (1=on|0=off)var _udn="auto"; // (auto|none|domain) set the domain name for cookiesvar _uhash="on"; // (on|off) unique domain hash for cookiesvar _utimeout="1800"; // set the inactive session timeout in secondsvar _ugifpath="/__utm.gif"; // set the web path to the __utm.gif filevar _utsp="|"; // transaction field separatorvar _uflash=1; // set flash version detect option (1=on|0=off)var _utitle=1; // set the document title detect option (1=on|0=off)var _ulink=0; // enable linker functionality (1=on|0=off)var _uanchor=0; // enable use of anchors for campaign (1=on|0=off)
//-- UTM Campaign Tracking Settingsvar _uctm=1; // set campaign tracking module (1=on|0=off)var _ucto="15768000"; // set timeout in seconds (6 month default)var _uccn="utm_campaign"; // namevar _ucmd="utm_medium"; // medium (cpc|cpm|link|email|organic)var _ucsr="utm_source"; // sourcevar _uctr="utm_term"; // term/keywordvar _ucct="utm_content"; // contentvar _ucid="utm_id"; // id numbervar _ucno="utm_nooverride"; // don't override
//-- Auto/Organic Sources and Keywordsvar _uOsr=new Array();var _uOkw=new Array();_uOsr[0]="google"; _uOkw[0]="q";_uOsr[1]="yahoo"; _uOkw[1]="p";_uOsr[2]="msn"; _uOkw[2]="q";_uOsr[3]="aol"; _uOkw[3]="query";_uOsr[4]="lycos"; _uOkw[4]="query";_uOsr[5]="ask"; _uOkw[5]="q";_uOsr[6]="altavista"; _uOkw[6]="q";_uOsr[7]="search"; _uOkw[7]="q";_uOsr[8]="netscape"; _uOkw[8]="query";_uOsr[9]="earthlink"; _uOkw[9]="q";_uOsr[10]="cnn"; _uOkw[10]="query";_uOsr[11]="looksmart"; _uOkw[11]="key";_uOsr[12]="about"; _uOkw[12]="terms";_uOsr[13]="excite"; _uOkw[13]="qkw";_uOsr[14]="mamma"; _uOkw[14]="query";_uOsr[15]="alltheweb"; _uOkw[15]="q";_uOsr[16]="gigablast"; _uOkw[16]="q";_uOsr[17]="voila"; _uOkw[17]="kw";_uOsr[18]="virgilio"; _uOkw[18]="qs";_uOsr[19]="teoma"; _uOkw[19]="q";_uOsr[20]="baidu"; _uOkw[20]="wd";
//-- Auto/Organic Keywords to Ignorevar _uOno=new Array();//_uOno[0]="urchin";//_uOno[1]="urchin.com";//_uOno[2]="www.urchin.com";
//-- Referral domains to Ignorevar _uRno=new Array();//_uRno[0]=".urchin.com";
//-- **** Don't modify below this point ***var _uff,_udh,_udt,_ubl=0,_udo="",_uu,_ufns=0,_uns=0,_ur="-", //指向页_ufno=0,_ust=0,_ubd=document,_udl=_ubd.location,_udlh="",_utcp="/",_uwv="1";
//HTTP协议的图像地址var _ugifpath2="http://www.google-analytics.com/__utm.gif";
//初始化_udlh,内容是URL中#后部分if (_udl.hash) _udlh=_udl.href.substring(_udl.href.indexOf('#'));
//若原有协议是HTTPS,则也用https图像地址if (_udl.protocol=="https:") _ugifpath2="https://ssl.google-analytics.com/__utm.gif";
if (!_utcp || _utcp=="") _utcp="/";
//page?!?!function urchinTracker(page) {//是本地文件,则不工作 if (_udl.protocol=="file:") return;
//若已经运行过,且page没内容,则不工作 if (_uff && (!page || page=="")) return;
var a,b,c,v,z,k,x="",s="",f=0;
//cookies的一部分,设定过期日期为,2038.1.18 var nx=" expires=Sun, 18 Jan 2038 00:00:00 GMT;";
//获取cookie var dc=_ubd.cookie;
//初始化_udh为网站的domain的Hash。默认情况下,是一个数值。 _udh=_uDomain();
//某随机整数 _uu=Math.round(Math.random()*2147483647);//当前时间日期 _udt=new Date();//根据日期.. _ust=Math.round(_udt.getTime()/1000);
//从cookie中提取位置信息 a=dc.indexOf("__utma="+_udh); b=dc.indexOf("__utmb="+_udh); c=dc.indexOf("__utmc="+_udh);
//?? if (_udn && _udn!="") { _udo=" domain="+_udn+";"; }
//设置x为??? if (_utimeout && _utimeout!="") { x=new Date(_udt.getTime()+(_utimeout*1000)); x=" expires="+x.toGMTString()+";"; }
//当linker功能打开时 if (_ulink) {
//使用anchor功能,且有URL有#,则s为"_udlh&" if (_uanchor && _udlh && _udlh!="") s=_udlh+"&"; s+=_udl.search; if(s && s!="" && s.indexOf("__utma=")>=0) { if (!(_uIN(a=_uGC(s,"__utma=","&")))) a="-"; if (!(_uIN(b=_uGC(s,"__utmb=","&")))) b="-"; if (!(_uIN(c=_uGC(s,"__utmc=","&")))) c="-"; v=_uGC(s,"__utmv=","&"); z=_uGC(s,"__utmz=","&"); k=_uGC(s,"__utmk=","&"); if ((k*1) != ((_uHash(a+b+c+z+v)*1)+(_udh*1))) {_ubl=1;a="-";b="-";c="-";z="-";v="-";} if (a!="-" && b!="-" && c!="-") f=1; else if(a!="-") f=2; } }
if(f==1) { _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+b+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+c+"; path="+_utcp+";"+_udo; } else if (f==2) { a=_uFixA(s,"&",_ust); _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } else if (a>=0 && b>=0 && c>=0) { _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; } else { if (a>=0) a=_uFixA(_ubd.cookie,";",_ust); else a=_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1"; _ubd.cookie="__utma="+a+"; path="+_utcp+";"+nx+_udo; _ubd.cookie="__utmb="+_udh+"; path="+_utcp+";"+x+_udo; _ubd.cookie="__utmc="+_udh+"; path="+_utcp+";"+_udo; _ufns=1; } if (_ulink && v && v!="" && v!="-") { v=_uUES(v); if (v.indexOf(";")==-1) _ubd.cookie="__utmv="+v+"; path="+_utcp+";"+nx+_udo; } _uInfo(page); _ufns=0; _ufno=0; _uff=1;}
function _uInfo(page) { var p,s="",pg=_udl.pathname+_udl.search;//路径名和query string if (page && page!="") pg=_uES(page,1);
//设置_ur为指向页,就用户跳转过来之前的那页。 _ur=_ubd.referrer;//如果没有,则设为特数值"-"标记 if (!_ur || _ur=="") { _ur="-"; } else { p=_ur.indexOf(_ubd.domain);//如果指向页是同一domain,则设置_ur为"0" if ((p>=0) && (p-1) { z=_uGC(dc,"__utmz="+_udh,";"); } else { z="-"; } t=_uGC(s,_ucid+"=","&"); t2=_uGC(s,_ucsr+"=","&"); t3=_uGC(s,"gclid=","&"); if ((t!="-" && t!="") || (t2!="-" && t2!="") || (t3!="-" && t3!="")) { if (t!="-" && t!="") c+="utmcid="+_uEC(t); if (t2!="-" && t2!="") { if (c != "") c+="|"; c+="utmcsr="+_uEC(t2); } if (t3!="-" && t3!="") { if (c != "") c+="|"; c+="utmgclid="+_uEC(t3); } t=_uGC(s,_uccn+"=","&"); if (t!="-" && t!="") c+="|utmccn="+_uEC(t); else c+="|utmccn=(not+set)"; t=_uGC(s,_ucmd+"=","&"); if (t!="-" && t!="") c+="|utmcmd="+_uEC(t); else c+="|utmcmd=(not+set)"; t=_uGC(s,_uctr+"=","&"); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); else { t=_uOrg(1); if (t!="-" && t!="") c+="|utmctr="+_uEC(t); } t=_uGC(s,_ucct+"=","&"); if (t!="-" && t!="") c+="|utmcct="+_uEC(t); t=_uGC(s,_ucno+"=","&"); if (t=="1") o=1; if (z!="-" && o==1) return ""; } if (c=="-" || c=="") { c=_uOrg(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (_ufns==1) c=_uRef(); if (z!="-" && _ufno==1) return ""; } if (c=="-" || c=="") { if (z=="-" && _ufns==1) { c="utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)"; } if (c=="-" || c=="") return ""; } if (z!="-") { i=z.indexOf("."); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); if (i>-1) i=z.indexOf(".",i+1); t=z.substring(i+1,z.length); if (t.toLowerCase()==c.toLowerCase()) cs=1; t=z.substring(0,i); if ((i=t.lastIndexOf(".")) > -1) { t=t.substring(i+1,t.length); cn=(t*1); } } if (cs==0 || _ufns==1) { t=_uGC(dc,"__utma="+_udh,";"); if ((i=t.lastIndexOf(".")) > 9) { _uns=t.substring(i+1,t.length); _uns=(_uns*1); } cn++; if (_uns==0) _uns=1; _ubd.cookie="__utmz="+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; path="+_utcp+"; "+x+_udo; } if (cs==0 || _ufns==1) return "&utmcn=1"; else return "&utmcr=1";}
function _uRef() {//指向为本域名(内指向,0),或者是直接访问,直接返回空 if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k,n; if ((i=_ur.indexOf("://")) -1) { k=h.substring(h.indexOf("/"),h.length); if (k.indexOf("?") > -1) k=k.substring(0,k.indexOf("?")); h=h.substring(0,h.indexOf("/")); } h=h.toLowerCase(); n=h;
//n为去掉可能存在的端口后的纯主机名 if ((i=n.indexOf(":")) > -1) n=n.substring(0,i);
//若n符合忽略指向 列表的内容,设置_ufno=1//忽略中,如果写google.com,则来之a.google,b.google这样的都认为是符合 for (var ii=0;ii -1 && n.length==(i+_uRno[ii].length)) { _ufno=1; break; } }
//搞掉可能的www if (h.indexOf("www.")==0) h=h.substring(4,h.length);
//utmccn=(referral),似乎是固定的,大属性//下面是utmccn的子属性//utmcsr=编码后h,去掉www.,包含端口的主机地址//utmcct=编码k,网页路径//utmcmd=referral return "utmccn=(referral)|utmcsr="+_uEC(h)+"|"+"utmcct="+_uEC(k)+"|utmcmd=referral";}
function _uOrg(t) { if (_ur=="0" || _ur=="" || _ur=="-") return ""; var i=0,h,k;
//提取指向页的域名 if ((i=_ur.indexOf("://")) -1) { h=h.substring(0,h.indexOf("/")); }
/*
搜索_uOsr数组,如果域名包含_uOsr中某元素,则认为是从这个搜索引擎过来的。然后对应的_uOkw则为搜索关键字的参数,如google使用 q=xxxxx这样的。提取出xxxx
*/ for (var ii=0;ii -1) { if ((i=_ur.indexOf("?"+_uOkw[ii]+"=")) > -1 || (i=_ur.indexOf("&"+_uOkw[ii]+"=")) > -1) { k=_ur.substring(i+_uOkw[ii].length+2,_ur.length); if ((i=k.indexOf("&")) > -1) k=k.substring(0,i); for (var yy=0;yy=2;ii--) { try { var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');"); if (fl) { f=ii + '.0'; break; } } catch(e) {} } } return f;}
function __utmLinker(l,h) { if (!_ulink) return; var p,k,a="-",b="-",c="-",z="-",v="-"; var dc=_ubd.cookie; if (!l || l=="") return; var iq = l.indexOf("?"); var ih = l.indexOf("#"); if (dc) { a=_uES(_uGC(dc,"__utma="+_udh,";")); b=_uES(_uGC(dc,"__utmb="+_udh,";")); c=_uES(_uGC(dc,"__utmc="+_udh,";")); z=_uES(_uGC(dc,"__utmz="+_udh,";")); v=_uES(_uGC(dc,"__utmv="+_udh,";")); k=(_uHash(a+b+c+z+v)*1)+(_udh*1); p="__utma="+a+"&__utmb="+b+"&__utmc="+c+"&__utmz="+z+"&__utmv="+v+"&__utmk="+k; } if (p) { if (h && ih>-1) return; if (h) { _udl.href=l+"#"+p; } else { if (iq==-1 && ih==-1) _udl.href=l+"?"+p; else if (ih==-1) _udl.href=l+"&"+p; else if (iq==-1) _udl.href=l.substring(0,ih-1)+"?"+p+l.substring(ih); else _udl.href=l.substring(0,ih-1)+"&"+p+l.substring(ih); } } else { _udl.href=l; }}
function __utmLinkPost(f,h) { if (!_ulink) return; var p,k,a="-",b="-",c="-",z="-",v="-"; var dc=_ubd.cookie; if (!f || !f.action) return; var iq = f.action.indexOf("?"); var ih = f.action.indexOf("#"); if (dc) { a=_uES(_uGC(dc,"__utma="+_udh,";")); b=_uES(_uGC(dc,"__utmb="+_udh,";")); c=_uES(_uGC(dc,"__utmc="+_udh,";")); z=_uES(_uGC(dc,"__utmz="+_udh,";")); v=_uES(_uGC(dc,"__utmv="+_udh,";")); k=(_uHash(a+b+c+z+v)*1)+(_udh*1); p="__utma="+a+"&__utmb="+b+"&__utmc="+c+"&__utmz="+z+"&__utmv="+v+"&__utmk="+k; } if (p) {//HTTP协议的图像地址 if (h && ih>-1) return; if (h) { f.action+="#"+p; } else { if (iq==-1 && ih==-1) f.action+="?"+p; else if (ih==-1) f.action+="&"+p; else if (iq==-1) f.action=f.action.substring(0,ih-1)+"?"+p+f.action.substring(ih); else f.action=f.action.substring(0,ih-1)+"&"+p+f.action.substring(ih); } } return;}
function __utmSetVar(v) { if (!v || v=="") return; var r=Math.round(Math.random() * 2147483647); _ubd.cookie="__utmv="+_udh+"."+_uES(v)+"; path="+_utcp+"; expires=Sun, 18 Jan 2038 00:00:00 GMT;"+_udo; var s="&utmt=var&utmn="+r; if (_userv==0 || _userv==2) { var i=new Image(1,1); i.src=_ugifpath+"?"+"utmwv="+_uwv+s; i.onload=function() { _uVoid(); } } if (_userv==1 || _userv==2) { var i2=new Image(1,1); i2.src=_ugifpath2+"?"+"utmwv="+_uwv+s+"&utmac="+_uacct+"&utmcc="+_uGCS(); i2.onload=function() { _uVoid(); } }}
function _uGCS() { var t,c="",dc=_ubd.cookie; if ((t=_uGC(dc,"__utma="+_udh,";"))!="-") c+=_uES("__utma="+t+";+"); if ((t=_uGC(dc,"__utmb="+_udh,";"))!="-") c+=_uES("__utmb="+t+";+"); if ((t=_uGC(dc,"__utmc="+_udh,";"))!="-") c+=_uES("__utmc="+t+";+"); if ((t=_uGC(dc,"__utmz="+_udh,";"))!="-") c+=_uES("__utmz="+t+";+"); if ((t=_uGC(dc,"__utmv="+_udh,";"))!="-") c+=_uES("__utmv="+t+";"); if (c.charAt(c.length-1)=="+") c=c.substring(0,c.length-1); return c;}
//对付cookie这种string用的//对字符串l,寻找n中第一个键的值。这个值由s指定结尾。//在这里,l一般是akey=aval;bkey=bval之类//然后n一般为akey=,s为";",则_uGC(l,'akey=',';')返回的是avalfunction _uGC(l,n,s) { if (!l || l=="" || !n || n=="" || !s || s=="") return "-"; var i,i2,i3,c="-"; i=l.indexOf(n); i3=n.indexOf("=")+1; if (i > -1) { i2=l.indexOf(s,i); if (i2 =0;i--) { var c=parseInt(d.charCodeAt(i)); h=((h 21)); } return h;}
function _uFixA(c,s,t) { if (!c || c=="" || !s || s=="" || !t || t=="") return "-"; var a=_uGC(c,"__utma="+_udh,s); var lt=0,i=0; if ((i=a.lastIndexOf(".")) > 9) { _uns=a.substring(i+1,a.length); _uns=(_uns*1)+1; a=a.substring(0,i); if ((i=a.lastIndexOf(".")) > 7) { lt=a.substring(i+1,a.length); a=a.substring(0,i); } if ((i=a.lastIndexOf(".")) > 5) { a=a.substring(0,i); } a+="."+lt+"."+t+"."+_uns; } return a;}
//普通的trim,将字符串s的两头的空格,换行和回车去掉,返回去掉后的结果function _uTrim(s) { if (!s || s=="") return ""; while ((s.charAt(0)==' ') || (s.charAt(0)=='\n') || (s.charAt(0,1)=='\r')) s=s.substring(1,s.length); while ((s.charAt(s.length-1)==' ') || (s.charAt(s.length-1)=='\n') || (s.charAt(s.length-1)=='\r')) s=s.substring(0,s.length-1); return s;}
//将输入字符串中的空格替换为+//如"abc def gh" 变为"abc+def++gh"function _uEC(s) { var n=""; if (!s || s=="") return ""; for (var i=0;i0) r=a.substring(i+1,i2); else return ""; if ((i=a.indexOf(".",i2+1))>0) t=a.substring(i2+1,i); else return ""; var c=new Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9'); return c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r&7)30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5&m]+c[t&m];}
//isDigital//当字符串n为纯数字(0--9和小数点)时,返回true//否则falsefunction _uIN(n) { if (!n) return false; for (var i=0;i"9") && (c!=".")) return false; } return true;}
//编码s,转换特殊字符function _uES(s,u) { if (typeof(encodeURIComponent) == 'function') { if (u) return encodeURI(s); else return encodeURIComponent(s); } else { return escape(s); }}
//解码function _uUES(s) { if (typeof(decodeURIComponent) == 'function') { return decodeURIComponent(s); } else { return unescape(s); }}

Leave a Reply