下面是部分翻译过的JS,看起来好看些。
(function () {
function setHref(a, b) {
return a.href = b;
}
function setName(a, b) {
return a.name = b;
}
//使用情况的埋点
var allusage = new function () {
var array = [];
this.set = function (b) {
array[b]= true;
};
this.usageFlag = function () {
for(var b = [], c = 0; c < array.length; c++) {
array[c]&& (b[Math.floor(c / 6)] = b[Math.floor(c / 6)] ^ 1 << c % 6);
}
for (c = 0; c < b.length; c++) {
b[c]= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(b[c]|| 0);
}
return b.join("") + "~";
};
};
//设置信息标志
function setMsgCode(a) {
allusage.set(a);
};
function isFunction(a) {
return "function" == typeof a;
}
function isArray(a) {
return "[object Array]" == Object.prototype.toString.call(Object(a));
}
function isString(a) {
return void 0 != a && - 1 < (a.constructor + "").indexOf("String");
}
function inString(a, b) {
return 0 == a.indexOf(b);
}
//去除空格
function removeBlank(a) {
return a ? a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, ""): "";
}
function Td() {
return [roundCode() ^ Mc() & 0x7FFFFFFF, Math.round((new Date).getTime() / 1E3)].join(".");
}
function createImg(a) {
var b = document.createElement("img");
b.width = 1;
b.height = 1;
b.src = a;
return b;
}
function emptyFunction() {
}
function encodeUri(a) {
if(encodeURIComponent instanceof Function) return encodeURIComponent(a);
setMsgCode(28);
return a;
}
//对括号进行编码
function encodeBracket(a) {
return encodeUri(a).replace(/\(/g, "%28").replace(/\)/g, "%29");
}
var addEvent = function (a, b, c, d) {
try {
a.addEventListener ? a.addEventListener(b, c, !!d): a.attachEvent && a.attachEvent("on" +b, c);
} catch (e) {
setMsgCode(27);
}
};
var removeEvent = function (a, b, c) {
a.removeEventListener ? a.removeEventListener(b, c, false): a.detachEvent && a.detachEvent("on" +b, c);
};
function createScript(a, b) {
if(a) {
var c = document.createElement("script");
c.type = "text/javascript";
c.async = true;
c.src = a;
c.id = b;
var d = document.getElementsByTagName("script")[0];
d.parentNode.insertBefore(c, d);
}
}
function getProtocol() {
return Ba || "https:" == document.location.protocol ? "https:" : "http:";
}
function getHostname() {
var a = "" + document.location.hostname;
return 0 == a.indexOf("www.") ? a.substring(4): a;
}
function getReferrer(a) {
var b = document.referrer;
if (/^https?:\/\//i.test(b)) {
if (a) return b;
a = "//" + document.location.hostname;
var c = b.indexOf(a);
if (5 == c || 6 == c) if (a = b.charAt(c +a.length), "/" == a || "?" == a || "" == a || ":" == a) return;
return b;
}
}
function preParameters(a, b) {
if(1 == b.length && null != b[0] && "object" === typeof b[0]) return b[0];
for (var c = { },
d = Math.min(a.length +1, b.length),
e = 0; e < d; e++)
if ("object" === typeof b[e]) {
for (var g in b[e]) b[e].hasOwnProperty(g) &&(c[g] = b[e][g]);
break;
} else e < a.length && (c[a[e]]= b[e]);
return c;
};
//用于存在储键值对应的容器
var kVContainer = function () {
this.keys =[];
this.w = { };
this.m = { };
};
kVContainer.prototype.set = function (a, b, c) {
this.keys.push(a);
c ? this.m[":" +a] = b: this.w[":" +a] = b;
};
kVContainer.prototype.get = function (a) {
return this.m.hasOwnProperty(":" +a) ? this.m[":" +a] : this.w[":" +a];
};
kVContainer.prototype.map = function (a) {
for(var b = 0; b < this.keys.length; b++) {
var c = this.keys[b];
var d = this.get(c);
d && a(c, d);
}
};
//是否禁用了跟踪,参见帮助文档
var isDisabledTrack = function (a) {
return false;
};
var fb = function (a) {
setTimeout(a, 100);
};
var getCookieValue = function (a) {
var b = [],
c = document.cookie.split(";");
a = new RegExp("^\\s*" +a + "=\\s*(.*?)\\s*$");
for (var d = 0; d < c.length; d++) {
var e = c[d].match(a);
e && b.push(e[1]);
}
return b;
};
var getsetCookie = function (a, b, c, d, e, g) {
//如果被禁用或自身几个网站,不进行跟踪,返回False
e = isDisabledTrack(e) ? false : regDoubleclick.test(document.location.hostname) || "/" == c && regGoogleSite.test(d) ? false : true;
if (!e) return false;
b && 1200 < b.length && (b = b.substring(0, 1200), setMsgCode(24));
c = a + "=" + b + "; path=" +c + "; ";
g && (c += "expires=" +(new Date((new Date).getTime() +g)).toGMTString() + "; ");
d && "none" != d && (c += "domain=" +d + ";");
d = document.cookie;
document.cookie = c;
if (!(d = d != document.cookie))
t: {
a = getCookieValue(a);
for (d = 0; d < a.length; d++)
if (b == a[d]) {
d = true;
break t;
}
d = false;
}
return d;
};
var regGoogleSite = new RegExp(/^(www\.)?google(\.com?)?(\.[a-z]{2})?$/);
var regDoubleclick = new RegExp(/(^|\.)doubleclick\.net$/i);
var Mc = function () {
//debugger;
for(var a = window.navigator.userAgent
+ (document.cookie ? document.cookie: "")
+ (document.referrer ? document.referrer: ""),
b = a.length,
c = window.history.length;
0 < c;) {
a += c-- ^ b++;
}
return La(a);
};
var oc = function () {
return getProtocol() + "//localhost:25388";
//return getProtocol() + "//www.google-analytics.com";
};
var lenException = function (a) {
setName(this, "len");
this.message = a + "-8192";
};
//firefox error
var ff2postException = function (a) {
setName(this, "ff2post");
this.message = a + "-2036";
};
//如果支持sendBeacon 就使用它,
var sendRequest = function (targetUrl, datas, callback, sendBeaconCallback) {
callback = callback || emptyFunction;
//优先使用sendBeaconCallback
sendBeaconCallback && (sendBeaconCallback = callback, window.navigator.sendBeacon ?
window.navigator.sendBeacon(targetUrl, datas) ?
(sendBeaconCallback(), sendBeaconCallback = true) : sendBeaconCallback = false : sendBeaconCallback = false);
if (!sendBeaconCallback) {
if (2036 >= datas.length) {
imageRequest(targetUrl, datas, callback);
} else if (8192 >= datas.length) {
if (0 <= window.navigator.userAgent.indexOf("Firefox") && ![].reduce) {
throw new ff2postException(datas.length);
}
XMLHttpRequest(targetUrl, datas, callback) || XDomainRequest(targetUrl, datas, callback) || IframeRequest(datas, callback) || callback();
} else {
throw new lenException(datas.length);
}
}
};
//图片的请求方式
var imageRequest = function (a, b, c) {
var d = createImg(a + "?" + b);
d.onload = d.onerror = function () {
d.onload = null;
d.onerror = null;
c();
};
};
//XDomainRequest
var XDomainRequest = function (a, b, c) {
var d;
d = window.XDomainRequest;
if (!d) return false;
d = new d;
d.open("POST", a);
d.onerror = function () {
c();
};
d.onload = c;
d.send(b);
return true;
};
var XMLHttpRequest = function (a, b, c) {
var d = window.XMLHttpRequest;
if (!d) return false;
var e = new d;
if (!("withCredentials" in e)) return false;
e.open("POST", a, true);
e.withCredentials = true;
e.setRequestHeader("Content-Type", "text/plain");
e.onreadystatechange = function () {
4 == e.readyState && (c(), e = null);
};
e.send(b);
return true;
};
var IframeRequest = function (a, b) {
if(!document.body)
return fb(function () {
IframeRequest(a, b);
}),
true;
a = encodeURIComponent(a);
try {
var c = document.createElement('<iframe name="' +a + '"></iframe>');
} catch (d) {
c = document.createElement("iframe"),
setName(c, a);
}
c.height = "0";
c.width = "0";
c.style.display = "none";
c.style.visibility = "hidden";
var e = document.location,
e = oc() + "/analytics_iframe.html#" + encodeURIComponent(e.protocol + "//" + e.host + "/favicon.ico"),
g = function () {
c.src = "";
c.parentNode && c.parentNode.removeChild(c);
};
addEvent(window, "beforeunload", g);
var ca = false,
l = 0,
k = function () {
if(!ca) {
try {
if (9 < l || c.contentWindow.location.host == document.location.host) {
ca = true;
g();
removeEvent(window, "beforeunload", g);
b();
return;
}
} catch (a) {
}
l++;
setTimeout(k, 200);
}
};
addEvent(c, "load", k);
document.body.appendChild(c);
c.src = e;
return true;
};
var Ha = function () {
this.t =[];
};
Ha.prototype.add = function (a) {
this.t.push(a);
};
Ha.prototype.D = function (a) {
try {
for (var b = 0; b < this.t.length; b++) {
var c = a.get(this.t[b]);
c && isFunction(c) && c.call(window, a);
}
} catch (d) {
}
b = a.get(hitCallback);
b != emptyFunction && isFunction(b) &&(a.set(hitCallback, emptyFunction, true), setTimeout(b, 10));
};
function checksampler(a) {
if(100 != a.get(sampleRate) && La(getStrConfig(a, clientId)) % 1E4 >= 100 * getIntConfig(a, sampleRate)) throw "abort";
}
function checkisDisabledTrack(a) {
if(isDisabledTrack(getStrConfig(a, trackingId))) throw "abort";
}
function checkProtocol() {
var a = document.location.protocol;
if ("http:" != a && "https:" != a) throw "abort";
}
function buildHitTasks(a) {
try {
window.XMLHttpRequest && "withCredentials" in new window.XMLHttpRequest ? setMsgCode(40): window.XDomainRequest && setMsgCode(41),
window.navigator.sendBeacon && setMsgCode(42);
} catch (b) {
}
a.set(stepInPage, getIntConfig(a, stepInPage) +1);
var c = [];
Qa.map(function(b, d) {
if(d.p) {
var e = a.get(b);
void 0 != e && e != d.defaultValue && ("boolean" == typeof e && (e *= 1), c.push(d.p + "=" + encodeUri("" +e)));
}
});
if (Ed(new Od(1E4))) {
var d = [];
d.push(round1());
d.push.apply(d, Td().split("."));
d.push(round2());
var e;
e = window.crypto ? true : false;
d.push(e ? "c": "b");
c.push("z=" +d.join("."));
} else c.push("z=" +round2());
a.set(hitPayload, c.join("&"), true);
}
function sendHitTasks(a) {
var b = getStrConfig(a, transportUrl) || oc() + "/collect";
sendRequest(b, getStrConfig(a, hitPayload), a.get(hitCallback), a.get(useBeacon));
a.set(hitCallback, emptyFunction, true);
}
function Hc(a) {
var b = window.gaData;
b && (b.expId && a.set(Nc, b.expId), b.expVar && a.set(Oc, b.expVar));
}
function checkpreviewTask() {
if(window.navigator && "preview" == window.navigator.loadPurpose) throw "abort";
}
function checkTrackidexist(a) {
if(!a.get(trackingId)) throw "abort";
};
var round1 = function () {
return Math.round(0x7FFFFFFF * Math.random());
};
var round2 = function () {
try {
var a = new Uint32Array(1);
window.crypto.getRandomValues(a);
return a[0]& 0x7FFFFFFF;
} catch (b) {
return round1();
}
};
var roundCode = round1;
function Ta(a) {
var b = getIntConfig(a, Ua);
500 <= b && setMsgCode(15);
var c = getStrConfig(a, hitType);
if ("transaction" != c && "item" != c) {
var c = getIntConfig(a, Wa),
d = (new Date).getTime(),
e = getIntConfig(a, Xa);
0 == e && a.set(Xa, d);
e = Math.round(2 * (d - e) / 1E3);
0 < e && (c = Math.min(c +e, 20), a.set(Xa, d));
if (0 >= c) throw "abort";
a.set(Wa, --c);
}
a.set(Ua, ++b);
};
var settings = function () {
this.data = new kVContainer;
};
var Qa = new kVContainer;
var Za = [];
settings.prototype.get = function (a) {
var b = $a(a);
var c = this.data.get(a);
b && void 0 == c && (c = isFunction(b.defaultValue) ? b.defaultValue(): b.defaultValue);
return b && b.n ? b.n(this, a, c): c;
};
settings.prototype.set = function (a, b, c) {
if(a)
if ("object" == typeof a) {
for (var d in a) {
a.hasOwnProperty(d) && ab(this, d, a[d], c);
}
} else {
ab(this, a, b, c);
}
};
var getStrConfig = function (a, b) {
var c = a.get(b);
return void 0 == c ? "" : "" + c;
};
var getIntConfig = function (a, b) {
var c = a.get(b);
return void 0 == c || "" === c ? 0 : 1 * c;
};
var ab = function (a, b, c, d) {
if(void 0 != c)
switch (b) {
case trackingId:
wb.test(c);
}
var e = $a(b);
e && e.o ? e.o(a, b, c, d): a.data.set(b, c, d);
};
var bb = function (aName, bshortName, cdefaultValue, d, e) {
setName(this, aName);
this.p = bshortName;
this.n = d;
this.o = e;
this.defaultValue = cdefaultValue;
};
var $a = function (a) {
var b = Qa.get(a);
if (!b)
for (var c = 0; c < Za.length; c++) {
var d = Za[c],
e = d[0].exec(a);
if (e) {
b = d[1](e);
Qa.set(b.name, b);
break;
}
}
return b;
};
var yc = function (a) {
var b;
Qa.map(function(c, d) {
d.p == a && (b = d);
});
return b && b.name;
};
var S = function (aName, bshortName, cdefaultValue, d, e) {
aName = new bb(aName, bshortName, cdefaultValue, d, e);
Qa.set(aName.name, aName);
return aName.name;
};
var cb = function (a, b) {
Za.push([new RegExp("^" +a + "$"), b]);
};
var T = function (aName, bshortName, cdefaultValue) {
return S(aName, bshortName, cdefaultValue, void 0, db);
};
var db = function () {
};
var WXAnalyticsObjectName = isString(window.WXAnalyticsObject) && removeBlank(window.WXAnalyticsObject) || "wa";
var Ba = false;
var apiVersion = T("apiVersion", "v");
var clientVersion = T("clientVersion", "_v");
S("anonymizeIp", "aip");
var hitType = S("hitType", "t");
var hitCallback = S("hitCallback");
var hitPayload = S("hitPayload");
S("nonInteraction", "ni");
S("currencyCode", "cu");
var useBeacon = S("useBeacon", void 0, false);
S("dataSource", "ds");
S("sessionControl", "sc", "");
S("sessionGroup", "sg");
S("queueTime", "qt");
var stepInPage = S("_s", "_s");
S("screenName", "cd");
var kb = S("location", "dl", "");
var lb = S("referrer", "dr");
var mb = S("page", "dp", "");
S("hostname", "dh");
var nb = S("language", "ul");
var ob = S("encoding", "de");
S("title", "dt",
function () {
return document.title || void 0;
});
cb("contentGroup([0-9]+)",
function (a) {
return new bb(a[0], "cg" +a[1]);
});
var pb = S("screenColors", "sd");
var qb = S("screenResolution", "sr");
var rb = S("viewportSize", "vp");
var sb = S("javaEnabled", "je");
var tb = S("flashVersion", "fl");
S("campaignId", "ci");
S("campaignName", "cn");
S("campaignSource", "cs");
S("campaignMedium", "cm");
S("campaignKeyword", "ck");
S("campaignContent", "cc");
var ub = S("eventCategory", "ec");
var xb = S("eventAction", "ea");
var yb = S("eventLabel", "el");
var zb = S("eventValue", "ev");
var Bb = S("socialNetwork", "sn");
var Cb = S("socialAction", "sa");
var Db = S("socialTarget", "st");
var Eb = S("l1", "plt");
var Fb = S("l2", "pdt");
var Gb = S("l3", "dns");
var Hb = S("l4", "rrt");
var Ib = S("l5", "srt");
var Jb = S("l6", "tcp");
var Kb = S("l7", "dit");
var Lb = S("l8", "clt");
var Mb = S("timingCategory", "utc");
var Nb = S("timingVar", "utv");
var Ob = S("timingLabel", "utl");
var Pb = S("timingValue", "utt");
S("appName", "an");
S("appVersion", "av", "");
S("appId", "aid", "");
S("appInstallerId", "aiid", "");
S("exDescription", "exd");
S("exFatal", "exf");
var Nc = S("expId", "xid");
var Oc = S("expVar", "xvar");
var Ua = S("_hc", void 0, 0);
var Xa = S("_ti", void 0, 0);
var Wa = S("_to", void 0, 20);
cb("dimension([0-9]+)",
function (a) {
return new bb(a[0], "cd" +a[1]);
});
cb("metric([0-9]+)",
function (a) {
return new bb(a[0], "cm" +a[1]);
});
S("linkerParam", void 0, void 0, Bc, db);
var ld = S("usage", "_u", void 0, function () {
return allusage.usageFlag();
}, db);
S("forceSSL", void 0, void 0,
function () {
return Ba;
},
function (a, b, c) {
setMsgCode(34);
Ba = !!c;
});
//var ed = S("_j1", "jid");
//var Hd = S("_j2", "gjid");
cb("\\&(.*)",
function (a) {
var b = new bb(a[0], a[1]),
c = yc(a[0].substring(1));
c && (b.n = function (a) {
return a.get(c);
},
b.o = function (a, b, g, ca) {
a.set(c, g, ca);
},
b.p = void 0);
return b;
});
var _oot = T("_oot");
var previewTask = S("previewTask");
var checkProtocolTask = S("checkProtocolTask");
var validationTask = S("validationTask");
var checkStorageTask = S("checkStorageTask");
//var historyImportTask = S("historyImportTask");
var samplerTask = S("samplerTask");
var _rlt = T("_rlt");
var buildHitTask = S("buildHitTask");
var sendHitTask = S("sendHitTask");
var ceTask = S("ceTask");
//var devIdTask = S("devIdTask");
var timingTask = S("timingTask");
//var displayFeaturesTask = S("displayFeaturesTask");
var V = T("name");
var clientId = T("clientId", "cid");
var userId = S("userId", "uid");
var trackingId = T("trackingId", "tid");
var cookieName = T("cookieName", void 0, "_wa");
var cookieDomain = T("cookieDomain");
var cookiePath = T("cookiePath", void 0, "/");
var cookieExpires = T("cookieExpires", void 0, 63072E3);
var legacyCookieDomain = T("legacyCookieDomain");
//var legacyHistoryImport = T("legacyHistoryImport", void 0, true);
var storage = T("storage", void 0, "cookie");
//var allowLinker = T("allowLinker", void 0, false);
//var allowAnchor = T("allowAnchor", void 0, true);
var sampleRate = T("sampleRate", "sf", 100);
var siteSpeedSampleRate = T("siteSpeedSampleRate", void 0, 1);
var alwaysSendReferrer = T("alwaysSendReferrer", void 0, false);
var transportUrl = S("transportUrl");
//var _r = S("_r", "_r");
//var _dfr = S("_dfr", void 0, 1);
function createCommands(commandName, b, c, d) {
b[commandName]= function () {
try {
return d && setMsgCode(d),
c.apply(this, arguments);
} catch (b) {
var g = b && b.name;
if (!(1 <= 100 * Math.random() || isDisabledTrack("?"))) {
var ca = ["t=error", "_e=exc", "_v=j30", "sr=1"];
commandName && ca.push("_f=" + commandName);
g && ca.push("_m=" + encodeUri(g.substring(0, 100)));
ca.push("aip=1");
ca.push("z=" +roundCode());
sendRequest(oc() + "/collect", ca.join("&"));
}
throw b;
}
};
};
var Od = function (a) {
this.V = a;
this.fa = void 0;
this.$ = false;
this.ha = void 0;
this.ea = 1;
};
var Ed = function (a, b, c) {
if(a.fa && a.$) return 0;
a.$ = true;
if (b) {
if (a.ha && getIntConfig(b, a.ha)) return getIntConfig(b, a.ha);
if (0 == b.get(siteSpeedSampleRate)) return 0;
}
if (0 == a.V) return 0;
void 0 === c && (c = round2());
return 0 == c % a.V ? Math.floor(c / a.V) % a.ea + 1: 0;
};
function flashVersion() {
var a, b, c;
if ((c = (c = window.navigator) ? c.plugins : null) && c.length)
for (var d = 0; d < c.length && !b; d++) {
var e = c[d];
-1 < e.name.indexOf("Shockwave Flash") && (b = e.description);
}
if (!b)
try {
a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"),
b = a.GetVariable("$version");
} catch (g) {
}
if (!b)
try {
a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),
b = "WIN 6,0,21,0",
a.AllowScriptAccess = "always",
b = a.GetVariable("$version");
} catch (ca) {
}
if (!b)
try {
a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),
b = a.GetVariable("$version");
} catch (l) {
}
b && (a = b.match(/[\d]+/g)) && 3 <= a.length && (b = a[0] + "." + a[1] + " r" + a[2]);
return b || void 0;
};
var collectPerformance = function (a, b) {
var c = Math.min(getIntConfig(a, siteSpeedSampleRate), 100);
if (!(La(getStrConfig(a, clientId)) % 100 >= c) && (c = { },
getperformance(c) || getperformance2(c))) {
var d = c[Eb];
void 0 == d || Infinity == d || isNaN(d) ||
(0 < d ? (Y(c, Gb), Y(c, Jb), Y(c, Ib), Y(c, Fb), Y(c, Hb), Y(c, Kb), Y(c, Lb), b(c)):
addEvent(window, "load",
function () {
collectPerformance(a, b);
},
false));
}
};
var getperformance = function (a) {
var b = window.performance || window.webkitPerformance,
b = b && b.timing;
if (!b) return false;
var c = b.navigationStart;
if (0 == c) return false;
a[Eb]= b.loadEventStart -c;
a[Gb]= b.domainLookupEnd -b.domainLookupStart;
a[Jb]= b.connectEnd -b.connectStart;
a[Ib]= b.responseStart -b.requestStart;
a[Fb]= b.responseEnd -b.responseStart;
a[Hb]= b.fetchStart -c;
a[Kb]= b.domInteractive -c;
a[Lb]= b.domContentLoadedEventStart -c;
return true;
};
var getperformance2 = function (a) {
if(window.top != window) return false;
var b = window.external,
c = b && b.onloadT;
b && !b.isValidLoadTime && (c = void 0);
2147483648 < c && (c = void 0);
0 < c && b.setPageReadyTime();
if (void 0 == c) return false;
a[Eb]= c;
return true;
};
var Y = function (a, b) {
var c = a[b];
if (isNaN(c) || Infinity == c || 0 > c) a[b]= void 0;
};
var sendTiming = function (a) {
return function (b) {
"pageview" != b.get(hitType) || a.I || (a.I = true, collectPerformance(b,
function (b) {
a.send("timing", b);
}));
};
};
var hc = false;
var mc = function (a) {
if("cookie" == getStrConfig(a, storage)) {
var b = getStrConfig(a, cookieName),
c = nd(a),
d = kc(getStrConfig(a, cookiePath)),
e = lc(getStrConfig(a, cookieDomain)),
g = 1E3 * getIntConfig(a, cookieExpires),
ca = getStrConfig(a, trackingId);
if ("auto" != e) getsetCookie(b, c, d, e, ca, g) && (hc = true);
else {
setMsgCode(32);
var l;
t: {
c =[];
e = getHostname().split(".");
if (4 == e.length && (l = e[e.length -1], parseInt(l, 10) == l)) {
l =["none"];
break t;
}
for (l = e.length -2; 0 <= l; l--) c.push(e.slice(l).join("."));
c.push("none");
l = c;
}
for (var k = 0; k < l.length; k++)
if (e = l[k], a.data.set(cookieDomain, e), c = nd(a), getsetCookie(b, c, d, e, ca, g)) {
hc = true;
return;
}
a.data.set(cookieDomain, "auto");
}
}
};
var checkStorage = function (a) {
if("cookie" == getStrConfig(a, storage) && !hc && (mc(a), !hc)) throw "abort";
};
var nd = function (a) {
var b = encodeBracket(getStrConfig(a, clientId));
var c = ic(getStrConfig(a, cookieDomain));
a = jc(getStrConfig(a, cookiePath));
1 < a && (c += "-" + a);
return ["MY_A1", c, b].join(".");
};
var Gc = function (a, b, c) {
for(var d = [], e =[], g, ca = 0; ca < a.length; ca++) {
var l = a[ca];
if (l.r[c]== b) d.push(l);
else void 0 == g || l.r[c] < g ? (e = [l], g = l.r[c]): l.r[c] == g && e.push(l);
}
return 0 < d.length ? d: e;
};
var lc = function (a) {
return 0 == a.indexOf(".") ? a.substr(1): a;
};
var ic = function (a) {
return lc(a).split(".").length;
};
var kc = function (a) {
if(!a) return "/";
1 < a.length && a.lastIndexOf("/") == a.length -1 && (a = a.substr(0, a.length -1));
0 != a.indexOf("/") &&(a = "/" + a);
return a;
};
var jc = function (a) {
a = kc(a);
return "/" == a ? 1 : a.split("/").length;
};
function Xc(a, b, c) {
"none" == b && (b = "");
var d = [],
e = getCookieValue(a);
a = "__utma" == a ? 6 : 2;
for (var g = 0; g < e.length; g++) {
var ca = ("" + e[g]).split(".");
ca.length >= a && d.push({
hash: ca[0],
R: e[g],
O: ca
});
}
return 0 == d.length ? void 0 : 1 == d.length ? d[0] : Zc(b, d) || Zc(c, d) || Zc(null, d) || d[0];
}
function Zc(a, b) {
var c, d;
null == a ? c = d = 1 : (c = La(a), d = La(inString(a, ".") ? a.substring(1): "." + a));
for (var e = 0; e < b.length; e++) if (b[e].hash == c || b[e].hash == d) return b[e];
};
var od = new RegExp(/^https?:\/\/([^\/:]+)/);
var pd = /(.*)([?&#])(?:_wa=[^&#]*)(?:&?)(.*)/;
function Bc(a) {
a = a.get(clientId);
var b = Ic(a, 0);
return "_wa=1." + encodeUri(b + "." + a);
}
function Ic(a, b) {
for(var c = new Date,
d = window.navigator,
e = d.plugins ||[],
c =[a, d.userAgent, c.getTimezoneOffset(), c.getYear(), c.getDate(), c.getHours(), c.getMinutes() +b],
d = 0; d < e.length; ++d) c.push(e[d].description);
return La(c.join("."));
}
var Dc = function (a) {
setMsgCode(48);
this.target = a;
this.T = false;
};
Dc.prototype.Q = function (a, b) {
if(a.tagName) {
if ("a" == a.tagName.toLowerCase()) {
a.href && setHref(a, qd(this, a.href, b));
return;
}
if ("form" == a.tagName.toLowerCase()) return rd(this, a);
}
if ("string" == typeof a) return qd(this, a, b);
};
var qd = function (a, b, c) {
var d = pd.exec(b);
d && 3 <= d.length && (b = d[1] + (d[3] ? d[2] + d[3] : ""));
a = a.target.get("linkerParam");
var e = b.indexOf("?"),
d = b.indexOf("#");
c ? b += (- 1 == d ? "#" : "&") + a : (c = - 1 == e ? "?" : "&", b = -1 == d ? b + (c + a) : b.substring(0, d) +c + a + b.substring(d));
return b;
};
var rd = function (a, b) {
if(b && b.action) {
var c = a.target.get("linkerParam").split("=")[1];
if ("get" == b.method.toLowerCase()) {
for (var d = b.childNodes ||[], e = 0; e < d.length; e++)
if ("_wa" == d[e].name) {
d[e].setAttribute("value", c);
return;
}
d = document.createElement("input");
d.setAttribute("type", "hidden");
d.setAttribute("name", "_wa");
d.setAttribute("value", c);
b.appendChild(d);
} else "post" == b.method.toLowerCase() &&(b.action = qd(a, b.action));
}
};
Dc.prototype.S = function (a, b, c) {
function d(c) {
try {
c = c || window.event;
var d;
t: {
var g = c.target || c.srcElement;
for (c = 100; g && 0 < c;) {
if (g.href && g.nodeName.match(/^a(?:rea)?$/i)) {
d = g;
break t;
}
g = g.parentNode;
c--;
}
d = {
};
}
("http:" == d.protocol || "https:" == d.protocol) && sd(a, d.hostname || "") && d.href && setHref(d, qd(e, d.href, b));
} catch (w) {
setMsgCode(26);
}
}
var e = this;
this.T || (this.T = true, addEvent(document, "mousedown", d, false), addEvent(document, "touchstart", d, false), addEvent(document, "keyup", d, false));
if (c) {
c = function (b) {
b = b || window.event;
if ((b = b.target || b.srcElement) && b.action) {
var c = b.action.match(od);
c && sd(a, c[1]) && rd(e, b);
}
};
for (var g = 0; g < document.forms.length; g++) addEvent(document.forms[g], "submit", c);
}
};
function sd(a, b) {
if(b == document.location.hostname) return false;
for (var c = 0; c < a.length; c++)
if (a[c]instanceof RegExp) {
if (a[c].test(b)) return true;
} else if (0 <= b.indexOf(a[c])) return true;
return false;
};
var wb = /^(UA|YT|MO|GP)-(\d+)-(\d+)$/;
var pc = function (a) {
function bind(a, b) {
d.b.data.set(a, b);
}
function bindfilters(a, c) {
bind(a, c);
d.filters.add(a);
}
var d = this;
this.b = new settings;
this.filters = new Ha;
bind(V, a[V]);
bind(trackingId, removeBlank(a[trackingId]));
bind(cookieName, a[cookieName]);
bind(cookieDomain, a[cookieDomain]|| getHostname());
bind(cookiePath, a[cookiePath]);
bind(cookieExpires, a[cookieExpires]);
bind(sampleRate, a[sampleRate]);
bind(siteSpeedSampleRate, a[siteSpeedSampleRate]);
bind(alwaysSendReferrer, a[alwaysSendReferrer]);
bind(storage, a[storage]);
bind(userId, a[userId]);
bind(apiVersion, 1);
bind(clientVersion, "j30");
bindfilters(_oot, checkisDisabledTrack);
bindfilters(previewTask, checkpreviewTask);
bindfilters(checkProtocolTask, checkProtocol);
bindfilters(validationTask, checkTrackidexist);
bindfilters(checkStorageTask, checkStorage);
bindfilters(samplerTask, checksampler);
bindfilters(_rlt, Ta);
bindfilters(ceTask, Hc);
bindfilters(buildHitTask, buildHitTasks);
bindfilters(sendHitTask, sendHitTasks);
bindfilters(timingTask, sendTiming(this));
Jc(this.b, a[clientId]);
preCommRequestArgs(this.b);
};
var Jc = function (a, b) {
if("cookie" == getStrConfig(a, storage)) {
hc = false;
var c;
i: {
var d = getCookieValue(getStrConfig(a, cookieName));
if (d && !(1 > d.length)) {
c =[];
for (var e = 0; e < d.length; e++) {
var g;
g = d[e].split(".");
var ca = g.shift();
("GA1" == ca || "1" == ca) && 1 < g.length ? (ca = g.shift().split("-"), 1 == ca.length && (ca[1] = "1"), ca[0]*= 1, ca[1]*= 1, g = {
r: ca,
s: g.join(".")
}): g = void 0;
g && c.push(g);
}
if (1 == c.length) {
setMsgCode(13);
c = c[0].s;
break i;
}
if (0 == c.length) setMsgCode(12);
else {
setMsgCode(14);
d = ic(getStrConfig(a, cookieDomain));
c = Gc(c, d, 0);
if (1 == c.length) {
c = c[0].s;
break i;
}
d = jc(getStrConfig(a, cookiePath));
c = Gc(c, d, 1);
c = c[0] && c[0].s;
break i;
}
}
c = void 0;
}
c || (c = getStrConfig(a, cookieDomain), d = getStrConfig(a, legacyCookieDomain) || getHostname(), c = Xc("__utma", d, c), (c = void 0 == c ? void 0 : c.O[1] + "." + c.O[2]) && setMsgCode(10));
c && (a.data.set(clientId, c), hc = true);
}
b && (setMsgCode(9), a.data.set(clientId, encodeUri(b)));
a.get(clientId)
|| ((c =
(c = window.gaGlobal && window.gaGlobal.vid) && - 1 != c.search(/^(?:utma\.)?\d+\.\d+$/)
? c : void 0) ? (setMsgCode(17), a.data.set(clientId, c)): (setMsgCode(8), a.data.set(clientId, Td())));
mc(a);
};
//准备通用的请请求参数
var preCommRequestArgs = function (a) {
var b = window.navigator,
c = window.screen,
d = document.location;
a.set(lb, getReferrer(a.get(alwaysSendReferrer)));
if (d) {
var e = d.pathname || "";
"/" != e.charAt(0) &&(setMsgCode(31), e = "/" + e);
a.set(kb, d.protocol + "//" + d.hostname +e + d.search);
}
c && a.set(qb, c.width + "x" + c.height);
c && a.set(pb, c.colorDepth + "-bit");
var c = document.documentElement,
g = (e = document.body) && e.clientWidth && e.clientHeight,
ca =[];
c && c.clientWidth && c.clientHeight && ("CSS1Compat" === document.compatMode || !g) ? ca = [c.clientWidth, c.clientHeight]: g && (ca = [e.clientWidth, e.clientHeight]);
c = 0 >= ca[0] || 0 >= ca[1] ? "" : ca.join("x");
a.set(rb, c);
a.set(tb, flashVersion());
a.set(ob, document.characterSet || document.charset);
a.set(sb, b && "function" === typeof b.javaEnabled && b.javaEnabled() || false);
a.set(nb, (b && (b.language || b.browserLanguage) || "").toLowerCase());
};
pc.prototype.get = function (a) {
return this.b.get(a);
};
pc.prototype.set = function (a, b) {
this.b.set(a, b);
};
var qc = {
pageview: [mb],
event: [ub, xb, yb, zb],
social: [Bb, Cb, Db],
timing: [Mb, Nb, Pb, Ob]
};
pc.prototype.send = function (a) {
if(!(1 > arguments.length)) {
var b, c;
if ("string" === typeof arguments[0]) {
(b = arguments[0], c =[].slice.call(arguments, 1));
} else {
(b = arguments[0]&& arguments[0][hitType], c = arguments);
}
if (b) {
c = preParameters(qc[b]||[], c),
c[hitType]= b,
this.b.set(c, void 0, true),
this.filters.D(this.b),
this.b.data.m = { },
setMsgCode(44);
}
}
};
var onPageIsVisibility = function (funcrun) {
if("prerender" == document.visibilityState) return false;
funcrun();
return true;
};
var td = /^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/;
var sc = function (a) {
if(isFunction(a[0])) this.u = a[0];
else {
var b = td.exec(a[0]);
null != b && 4 == b.length && (this.c = b[1]
|| "t0", this.e = b[2]
|| "", this.d = b[3], this.a =[].slice.call(a, 1), this.e
|| (this.A = "create" == this.d, this.i = "require" == this.d, this.g = "provide" == this.d, this.ba = "remove" == this.d), this.i && (3 <= this.a.length ? (this.X = this.a[1], this.W = this.a[2]): this.a[1]&& (isString(this.a[1]) ? this.X = this.a[1]: this.W = this.a[1])));
b = a[1];
a = a[2];
if (!this.d) throw "abort";
if (this.i && (!isString(b) || "" == b)) throw "abort";
if (this.g && (!isString(b) || "" == b || !isFunction(a))) throw "abort";
if (ud(this.c) || ud(this.e)) throw "abort";
if (this.g && "t0" != this.c) throw "abort";
}
};
function ud(a) {
return 0 <= a.indexOf(".") || 0 <= a.indexOf(":");
};
var Yd;
var Zd;
var $d;
Yd = new kVContainer;
$d = new kVContainer;
Zd = {
ec: 45,
ecommerce: 46,
linkid: 47
};
var tc = function (a, b, c) {
b == $ ? setMsgCode(35): b.get(V);
var d = Yd.get(a);
if (!isFunction(d)) return false;
b.plugins_ = b.plugins_ || new kVContainer;
if (b.plugins_.get(a)) return true;
b.plugins_.set(a, new d(b, c || {
}));
return true;
};
var parseUrl = function (a) {
function b(a) {
var b = (a.hostname || "").split(":")[0].toLowerCase(),
c = (a.protocol || "").toLowerCase(),
c = 1 * a.port || ("http:" == c ? 80 : "https:" == c ? 443 : "");
a = a.pathname || "";
inString(a, "/") || (a = "/" + a);
return [b, "" +c, a];
}
var c = document.createElement("a");
setHref(c, document.location.href);
var d = (c.protocol || "").toLowerCase(),
e = b(c),
g = c.search || "",
ca = d + "//" + e[0] + (e[1] ? ":" + e[1] : "");
inString(a, "//") ? a = d + a : inString(a, "/") ? a = ca + a : !a || inString(a, "?") ? a = ca + e[2] + (a || g) : 0 > a.split("/")[0].indexOf(":") &&(a = ca + e[2].substring(0, e[2].lastIndexOf("/")) + "/" + a);
setHref(c, a);
d = b(c);
return {
protocol: (c.protocol || "").toLowerCase(),
host: d[0],
port: d[1],
path: d[2],
G: c.search || "",
url: a || ""
};
};
var Z = {
wa: function () {
Z.f =[];
}
};
Z.wa();
Z.D = function (a) {
var b = Z.J.apply(Z, arguments),
b = Z.f.concat(b);
for (Z.f =[]; 0 < b.length && !Z.v(b[0]) && !(b.shift(), 0 < Z.f.length););
Z.f = Z.f.concat(b);
};
Z.J = function (a) {
for(var b = [], c = 0; c < arguments.length; c++)
try {
var d = new sc(arguments[c]);
if (d.g) Yd.set(d.a[0], d.a[1]);
else {
if (d.i) {
var e = d,
g = e.a[0];
if (!isFunction(Yd.get(g)) && !$d.get(g)) {
Zd.hasOwnProperty(g) && setMsgCode(Zd[g]);
var ca = e.X;
!ca && Zd.hasOwnProperty(g) ?(setMsgCode(39), ca = g + ".js") : setMsgCode(43);
if (ca) {
ca && 0 <= ca.indexOf("/") ||(ca = "/plugins/ua/" +ca);
var l = parseUrl(ca);
var e = void 0;
var k = l.protocol;
var w = document.location.protocol;
e = "https:" == k || k == w ? true : "http:" != k ? false : "http:" == w;
var xd;
if (xd = e) {
var e = l,
be = parseUrl(document.location.href);
if (e.G || 0 <= e.url.indexOf("?") || 0 <= e.path.indexOf("://")) xd = false;
else if (e.host == be.host && e.port == be.port) xd = true;
else {
var ce = "http:" == e.protocol ? 80 : 443;
xd = "localhost:25388" == e.host && (e.port || ce) == ce && inString(e.path, "/plugins/") ? true : false;
}
}
xd && (createScript(l.url), $d.set(g, true));
}
}
}
b.push(d);
}
} catch (de) {
//
throw de;
}
return b;
};
Z.v = function (a) {
try {
if (a.u) a.u.call(window, $.j("t0"));
else {
var b = a.c == WXAnalyticsObjectName ? $: $.j(a.c);
if (a.A) "t0" == a.c && $.create.apply($, a.a);
else if (a.ba) $.remove(a.c);
else if (b)
if (a.i) {
if (!tc(a.a[0], b, a.W)) return true;
} else if (a.e) {
var c = a.d,
d = a.a,
e = b.plugins_.get(a.e);
e[c].apply(e, d);
} else b[a.d].apply(b, a.a);
}
} catch (g) {
//
throw g;
}
};
var $ = function (a) {
setMsgCode(1);
Z.D.apply(Z, [arguments]);
};
$.h = { };
$.P =[];
$.L = 0;
$.answer = 42;
var uc = [trackingId, cookieDomain, V];
$.create = function (a) {
var b = preParameters(uc, [].slice.call(arguments));
b[V]|| (b[V] = "t0");
var c = "" + b[V];
if ($.h[c]) return $.h[c];
b = new pc(b);
$.h[c]= b;
$.P.push(b);
return b;
};
$.remove = function (a) {
for(var b = 0; b < $.P.length; b++)
if ($.P[b].get(V) == a) {
$.P.splice(b, 1);
$.h[a]= null;
break;
}
};
$.j = function (a) {
return $.h[a];
};
$.K = function () {
return $.P.slice(0);
};
$.N = function () {
"wa" != WXAnalyticsObjectName && setMsgCode(49);
var a = window[WXAnalyticsObjectName];
if (!a || 42 != a.answer) {
$.L = a && a.l;
$.loaded = true;
var b = window[WXAnalyticsObjectName]= $;
createCommands("create", b, b.create, 3);
createCommands("remove", b, b.remove);
createCommands("getByName", b, b.j, 5);
createCommands("getAll", b, b.K, 6);
b = pc.prototype;
createCommands("get", b, b.get, 7);
createCommands("set", b, b.set, 4);
createCommands("send", b, b.send, 2);
b = settings.prototype;
createCommands("get", b, b.get);
createCommands("set", b, b.set);
(window.waplugins = window.waplugins || { }).Linker = Dc;
b = Dc.prototype;
Yd.set("linker", Dc);
createCommands("decorate", b, b.Q, 20);
createCommands("autoLink", b, b.S, 25);
//Yd.set("displayfeatures", fd);
//Yd.set("adfeatures", Kd);
a = a && a.q;
if (isArray(a)) {
Z.D.apply($, a);
} else {
setMsgCode(50);
}
}
};
//启动入口
(function () {
var a = $.N;
if (!onPageIsVisibility(a)) {
setMsgCode(16);
var b = false;
var c = function () {
!b && onPageIsVisibility(a) &&(b = true, removeEvent(document, "visibilitychange", c));
};
addEvent(document, "visibilitychange", c);
}
}) ();
//这个是干什么的?我不知道。
function La(a) {
var b = 1,
c = 0,
d;
if (a)
for (b = 0, d = a.length -1; 0 <= d; d--) {
c = a.charCodeAt(d),
b = (b << 0x6 & 0xFFFFFFF) +c + (c << 14),
c = b & 0xFE00000,
b = 0 != c ? b ^ c >> 21 : b;
}
return b;
};
}) (window);
最后说一下,谷歌代码编译工具。
http://closure-compiler.appspot.com/home
编译后,代码长度明显变短了。。。