123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- !function() {
- var e, t, n, r, a, i, o, c, s, u, d, l, p, g, f, m, v, h, I, E, x, S, y;
- return S = {localStorage: this.localStorage ? !0 : !1,postMessage: this.postMessage ? !0 : !1}, S.localStorage || (this.localStorage = {setItem: function() {
- },getItem: function() {
- },removeItem: function() {
- }}, this.sessionStorage = {setItem: function() {
- },getItem: function() {
- },removeItem: function() {
- }}), o = this.localStorage, d = this.sessionStorage, y = function() {
- var e, t, n;
- return e = (new Date).getTime(), t = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx", n = t.replace(/[xy]/g, function(t) {
- var n;
- return n = (e + 16 * Math.random()) % 16 | 0, e = Math.floor(e / 16), "x" === t ? n.toString(16) : (7 & n | 8).toString(16)
- }), n.replace(/-/g, "").toUpperCase()
- }, t = {get: function(e) {
- var t, n;
- return n = "(^|;)\\s*" + e + "=([^;\\s]*)", t = document.cookie.match(new RegExp(n)), t && t.length >= 3 ? decodeURIComponent(t[2]) : null
- },set: function(e, t, n, r, a, i) {
- var o, c, s, u, d;
- return n && (o = new Date, o.setTime(o.getTime() + 864e5 * n)), s = n ? "; expires=" + o.toGMTString() : "", u = "; path=" + (a || "/"), c = r ? "; domain=" + r : "", d = i ? "; secure" : "", document.cookie = e + "=" + encodeURIComponent(t) + s + u + c + d
- },remove: function(e, n, r) {
- return t.set(e, "", -1, n, r)
- }}, v = function(e) {
- return "[object Object]" === Object.prototype.toString.call(e)
- }, g = Array.prototype.every, g || (g = function(e) {
- var t, n, r, a;
- for (n = !0, r = 0, a = this.length; a > r; r++)
- if (t = this[r], !e(t))
- return !1;
- return n
- }), f = function(e) {
- var t, n, r;
- for (t in e)
- r = e[t], e[t] = r;
- return n = arguments.length >= 2 ? [].slice.call(arguments, 1) : [], n.forEach(function(n) {
- var a;
- a = [];
- for (t in n)
- r = n[t], a.push(e[t] = r);
- return a
- }), e
- }, x = {API_PATH: "http://rd.gdatacube.net/dc/html5/sync",PROXY: "http://rd.gdatacube.net/dc/html5/whoami",CLIENT_KEY: "dcagent_client_id",VERSION_NUMBER: "9",appId: "",deviceId: "",accountId: "",channel: "",appVer: "",interval: 10,intervalCount: 0,initialized: !1,loginTime: 0,timer: 0}, l = {max: 100,count: 0,excludes: [],isReportAllowed: function(e) {
- var t;
- return l.count < l.max ? t = g.call(l.excludes, function(t) {
- return -1 === e.indexOf(t)
- }) : void 0
- }}, I = {succ: 0,fail: 0,total: 0}, s = "_DESelf_OSS", h = [], E = function(e, t) {
- var n, r, a, i, o, c, u, d;
- if (e.data) {
- (null != (u = e.data.errors) ? u.length : void 0) > l.max && (e.data.errors = e.data.errors.slice(0, 100)), d = e.data;
- for (n in d)
- o = d[n], "number" == typeof o && (a[n] = String(o));
- if (a = f({headers: m.getBaseSettings()}, e.data), x.debug)
- return x.debug(x.API_PATH, a);
- if (r = Math.abs(x.onlinetime), !(r > 864e3 || 0 >= r))
- return c = new XMLHttpRequest, c.timeout = 3e4, c.open("POST", t || x.API_PATH, !0), c.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"), i = Date.now(), c.onreadystatechange = function(t) {
- var n, r, a;
- return r = this.status >= 200 && this.status < 300, 4 === this.readyState ? (n = Date.now() - i, a = r && "success" === this.responseText, a ? (I.succ = 1, I.fail = 0, I.total = n) : (I.fail += 1, I.succ = 0, I.total += n), p.updateEvents({eventid: s,labelmap: JSON.stringify(I),duration: "1"}), a ? "function" == typeof e.success ? e.success(t) : void 0 : "function" == typeof e.fail ? e.fail(t) : void 0) : void 0
- }, c.ontimeout = function() {
- return I.fail += 1, I.succ = 0, I.total += elapsed, p.updateEvents({eventid: s,labelmap: JSON.stringify(I),duration: "1"})
- }, c.send(JSON.stringify(a))
- }
- }, a = "dcagent_client_events", r = "dcagent_client_errors", c = "dcagent_parent_id", e = "dcagent_create_time", u = "dcagent_login_time", i = "dcagent_interval_key", p = {getEvents: function() {
- return function() {
- var e;
- return e = o.getItem(a), e ? JSON.parse(e) : []
- }
- }(this),getErrors: function() {
- return function() {
- var e;
- return e = o.getItem(r), e ? JSON.parse(e) : []
- }
- }(this),updateEvents: function() {
- return function(e, t) {
- var n, r, i, c;
- if (null == t && (t = !0), n = p.getEvents(), Array.isArray(e))
- for (i = 0, c = e.length; c > i; i++)
- r = e[i], n.push(r);
- else
- n.push(e);
- return S.localStorage && t ? o.setItem(a, JSON.stringify(n.slice(0, l.max))) : E({data: {events: n}})
- }
- }(this),updateErrors: function() {
- return function(e) {
- var t, n, a, i;
- if (t = p.getErrors(), Array.isArray(e))
- for (a = 0, i = e.length; i > a; a++)
- n = e[a], t.push(n);
- else
- t.push(e);
- return S.localStorage ? o.setItem(r, JSON.stringify(t.slice(0, l.max))) : E({data: {errors: t}})
- }
- }(this),clear: function() {
- return function() {
- return o.removeItem(a), o.removeItem(r)
- }
- }(this)}, m = {set: function(e, n) {
- return null == n && (n = y()), localStorage.setItem(e, n), t.set(e, n, 365), n
- },get: function(e) {
- return localStorage.getItem(e) || t.get(e)
- },getBaseSettings: function() {
- var t;
- if (!x.appId)
- throw new Error("InitError: missing appId");
- if (!x.accountId)
- throw new Error("AccountError: unknown accountId");
- if (!x.deviceId)
- throw new Error("DeviceError: unknown device");
- return t = x.intervalCount * x.interval / 1e3 || 1, {appid: x.appId,accountid: x.accountId,uid: x.deviceId,appver: x.appVer,ver: x.VERSION_NUMBER,referer: document.referrer || "",screen: "" + (parseInt(screen.width) || 0) + "*" + (parseInt(screen.height) || 0),logintime: String(parseInt(x.loginTime / 1e3)),onlinetime: String(t),crtime: m.get(e) || "",domain: document.domain}
- },reportOnline: function(e, t, n) {
- var r, a, i;
- return i = {data: {online: {}}}, i.data.events = e || [], i.data.errors = t || [], n && (i.data.reg = n), a = p.getEvents(), r = p.getErrors(), (a.length || r.length) && (p.clear(), i.data.events = i.data.events.concat(a), i.data.errors = i.data.errors.concat(r), i.data.fail = function() {
- return p.updateErrors(r), p.updateEvents(a)
- }), E(i)
- },injectErrorEvent: function(e) {
- return function() {
- return e.addEventListener("error", function(e) {
- var t, n, r, a, i;
- try {
- if (l.isReportAllowed(e.filename))
- return l.count += 1, r = {}, n = ["colno", "filename", "lineno", "message"], n.forEach(function(t) {
- return r[t] = e[t] || "0"
- }), r.stack = (null != (a = e.error) ? a.stack : void 0) || "", r.type = (null != (i = e.error) ? i.name : void 0) || "Error", r.timestamp = parseInt(e.timeStamp / 1e3), p.updateErrors(r)
- } catch (o) {
- return t = o, console.log(t)
- }
- }, !1)
- }
- }(this),appendUID: function(e) {
- var t, n, r, a, i;
- return r = location.hash, t = "!" + e, r ? (i = /![0-9A-Z]{32,128}/gi, n = r.match(i), n ? (a = n[0].slice(1), e === a || m.get(c) || (x.parentId = a, m.set(c, a)), location.href = location.href.replace(i, t)) : location.href += t) : location.href += "#" + t
- },getServerUID: function(t) {
- var n, r, a;
- return S.postMessage ? (n = function(r) {
- var a;
- return 0 === x.PROXY.indexOf(r.origin) ? (a = JSON.parse(r.data), m.set(e, a.crtime), t(a.id), window.removeEventListener("message", n, !1)) : void 0
- }, window.addEventListener("message", n, !1), r = document.createElement("iframe"), r.style.display = "none", r.src = "" + x.PROXY, r.onload = function() {
- return this.onload = null, this.parentNode.removeChild(this)
- }, a = function() {
- return document.body.appendChild(r)
- }, document.body ? a() : document.addEventListener("DOMContentLoaded", a, !1)) : t(y())
- },sendPV: function(e, t) {
- var n, r;
- return null == e && (e = location.pathname + location.search), n = {page: encodeURIComponent(e),optime: parseInt(x.initializedOn / 1e3),ottime: parseInt(Date.now() / 1e3),lttime: parseInt(x.loginTime / 1e3)}, r = [{eventid: "_DESelf_PV",labelmap: JSON.stringify(n),duration: "1"}], m.reportOnline(r, null, t)
- }}, n = {version: x.VERSION_NUMBER,init: function(e) {
- var t, n, r, a;
- if (e.errorReport !== !1 && (e.excludes && (l.excludes = l.excludes.concat(e.excludes)), m.injectErrorEvent()), x.initialized)
- throw new Error("InitError: initialized already");
- if (!e.appId)
- throw new Error("InitError: missing argument appId");
- return n = ["appId", "accountId", "appVer"], n.forEach(function(t) {
- return x[t] = e[t] || ""
- }), t = m.get(x.CLIENT_KEY), a = function(t) {
- var n, a, o;
- return m.set(x.CLIENT_KEY, t), x.deviceId = t, x.accountId || (x.accountId = t), x.debug = e.debug, a = d.getItem(u), a || (a = Date.now(), d.setItem(u, a)), x.loginTime = a, n = d.getItem(i), n || (n = "0", d.setItem(i, n)), x.intervalCount = parseInt(n), x.interval = 1e3 * Math.max(10, parseFloat(e.interval || x.interval)), x.timer = setInterval(function() {
- return x.intervalCount += 1, d.setItem(i, x.intervalCount), m.reportOnline()
- }, x.interval), x.virus = e.virus === !1 ? 0 : 1, x.virus && m.appendUID(t), x.initializedOn = Date.now(), x.initialized = !0, r && (o = {isact: r,isreg: 1}, x.parentId && (o.parentid = x.parentId), S.localStorage || (o.localstorage = 1)), m.sendPV(null, o)
- }, r = t ? 0 : 1, t ? a(t) : m.getServerUID(a)
- },onEvent: function(e, t, n) {
- var r, a, i;
- if (null == t && (t = 0), !e)
- throw new Error("ArgumentError: missing eventId");
- if (v(n)) {
- for (a in n)
- i = n[a], n[a] = encodeURIComponent(i);
- r = JSON.stringify(n)
- } else
- r = "";
- return p.updateEvents({eventid: e,duration: String(t),labelmap: r})
- },onPageView: function(e) {
- return m.sendPV(e)
- },onPayment: function(e) {
- var t;
- if (e && e.hasOwnProperty("amount"))
- return e.amount = parseFloat(e.amount) || 0, t = {data: {payment: {currencyAmount: e.amount.toFixed(2),currencyType: e.currencyType || "CNY",payType: String(e.payType || ""),iapid: String(e.iapid || ""),orderId: String(e.orderId || ""),payTime: String(e.payTime || "")}}}, E(t, x.API_PATH)
- }}, this.DCAgent = n
- }();
|