var __marketing_onload_uuid = '0f0c1097-ba01-42e3-8e15-9bee1a818ca0'; var __marketing_activityId = '60c13c8e2674fa0149c52fd4322f6f3e'; var __marketing_traceId = 'a8484e03b8824cb78eb32aa318948129'; var __marketing_cust_page_category = ''; 'use strict'; try { var __marketing_trace_log = {}; window.__marketing_trace_log = __marketing_trace_log; try { __marketing_trace_log.version = "0.0.5"; __marketing_trace_log.activityId = __marketing_activityId; __marketing_trace_log.custPageCategory = __marketing_cust_page_category; __marketing_trace_log.traceId = __marketing_traceId; __marketing_trace_log.onloadUUID = __marketing_onload_uuid; __marketing_trace_log.openTime = Date.now(); __marketing_trace_log.onloadTime = -1; __marketing_trace_log.vconsole = /vconsole=1/gi.test(location.search); __marketing_trace_log.userInfo = {}; __marketing_trace_log.windowOnBlur = false; __marketing_trace_log.__log = function () { if (__marketing_trace_log.vconsole) { for (var _len = arguments.length, data = Array(_len), _key = 0; _key < _len; _key++) { data[_key] = arguments[_key]; } if (data.length === 1) { console.log(data[0]); } else if (data.length === 2) { console.log(data[0], data[1]); } else if (data.length === 3) { console.log(data[0], data[1], data[2]); } else if (data.length === 4) { console.log(data[0], data[1], data[2], data[3]); } else if (data.length === 5) { console.log(data[0], data[1], data[2], data[3], data[4]); } else { console.log(data); } } }; __marketing_trace_log.setCookie = function (key, value) { if (typeof document === 'undefined') { return; } return document.cookie = key + '=' + encodeURIComponent(value) + '; path=/'; }; __marketing_trace_log.getFullRequestUrl = function (path) { var host = window.location.host; if (["wx.17u.cn", "wx.t.17u.cn", "wx.uat.17u.cn", "wx.qa.17u.cn"].indexOf(host) !== -1) { return location.protocol + "//" + host + path; } return location.protocol + "//wx.17u.cn" + path; }; __marketing_trace_log.getReportData = function (category, action, label, value) { return { activityId: __marketing_trace_log.activityId, custPageCategory: __marketing_trace_log.custPageCategory, category: category, action: action, label: label, traceId: __marketing_trace_log.traceId, onloadUUID: __marketing_trace_log.onloadUUID, userInfo: __marketing_trace_log.userInfo, value: value ? value : "", clientTime: Date.now(), pageReferer: document.referrer, windowHidden: document.hidden || document.msHidden || document.mozHidden || document.webkitHidden, windowOnBlur: __marketing_trace_log.windowOnBlur, windowOnLine: window.navigator.onLine }; }; __marketing_trace_log.report = function (category, action, label, value, async) { try { var httpRequest = new XMLHttpRequest(); httpRequest.withCredentials = true; httpRequest.open("POST", __marketing_trace_log.getFullRequestUrl("/mactivitytrace/api/trace/front/log"), async); httpRequest.setRequestHeader("Content-Type", "application/json"); httpRequest.send(JSON.stringify(__marketing_trace_log.getReportData(category, action, label, value))); } catch (error) { console.error("trace-log", "send", error); } }; __marketing_trace_log.sendBeacon = function (category, action, label, value) { if (window.navigator.sendBeacon && typeof window.navigator.sendBeacon === "function") { var data = __marketing_trace_log.getReportData(category, action, label, value); var formData = new FormData(); for (var i = 0; i < Object.keys(data).length; i++) { var key = Object.keys(data)[i]; var postDatavalue = data[key]; if (typeof postDatavalue !== 'string') { postDatavalue = JSON.stringify(postDatavalue); } if (typeof postDatavalue === 'undefined') { postDatavalue = '_value_undefined'; } else if (postDatavalue === null) { postDatavalue = '_value_null'; } formData.append(key, postDatavalue); } window.navigator.sendBeacon(__marketing_trace_log.getFullRequestUrl('/mactivitytrace/api/trace/front/log/' + __marketing_trace_log.activityId), formData); return true; } else { return false; } }; __marketing_trace_log.reportWithBeacon = function (category, action, label, value, async) { if (!__marketing_trace_log.sendBeacon(category, action, label, value)) { __marketing_trace_log.report(category, action, label, async); } }; __marketing_trace_log.gifreport = function (v, n) { n = n + 1; if (n > 2 || !v) return; var _tcimg = new Image(); _tcimg.src = v + "&_v=" + n + "&dt=" + Date.now(); _tcimg.onload = function () { // delete _tcimg; }; _tcimg.onerror = function () { __marketing_trace_log.gifreport(v, n); return true; }; }; __marketing_trace_log.getUserInfo = function () { // 同程客户端 if (/tctravel/gi.test(window.navigator.userAgent)) { if (window._tc_bridge_public === undefined) { setTimeout(function () { return __marketing_trace_log.getUserInfo(); }, 100); } else { if (_tc_bridge_public && _tc_bridge_public.isTc) { _tc_bridge_user.get_device_info({ param: {}, callback: function callback(data) { var cbData = JSON.parse(data.CBData); var memberInfo = cbData ? cbData.memberInfo : {}; var deviceInfo = cbData ? cbData.deviceInfo : {}; __marketing_trace_log.userInfo = { memberId: memberInfo.memberId, deviceId: deviceInfo.deviceId }; __marketing_trace_log.setCookie('__marketing_trace_log_user_info', JSON.stringify(__marketing_trace_log.userInfo)); __marketing_trace_log.__log('__marketing_trace_log', 'getUserInfo', '同程客户端环境用户信息初始化完成', __marketing_trace_log.userInfo); } }); } } } }; __marketing_trace_log.getTimeCost = function () { var timeCost = null; if (window.performance && window.performance.timing) { var timing = window.performance.timing; timeCost = { dns: timing.domainLookupEnd - timing.domainLookupStart, tcp: timing.connectEnd - timing.connectStart, ssl: timing.connectEnd - timing.secureConnectionStart, ttfb: timing.responseStart - timing.requestStart, trans: timing.responseEnd - timing.responseStart, dom: timing.domInteractive - timing.responseEnd, res: timing.loadEventStart - timing.domContentLoadedEventEnd, firstbyte: timing.responseStart - timing.domainLookupStart, fpt: timing.responseEnd - timing.fetchStart, tti: timing.domInteractive - timing.fetchStart, ready: timing.domContentLoadedEventEnd - timing.fetchStart, load: timing.loadEventStart - timing.fetchStart }; } return timeCost; }; __marketing_trace_log.getUserInfo(); window.addEventListener('error', function (error) { __marketing_trace_log.reportWithBeacon("org_html", "window_onerror", "listener_full", JSON.stringify({ colno: error.colno, innerError: error.error, filename: error.filename, lineno: error.lineno, message: error.message, type: error.type }), true); }); window.addEventListener("unhandledrejection", function (error) { __marketing_trace_log.reportWithBeacon("org_html", "window_onerror", "unhandledrejection_full", JSON.stringify({ colno: error.colno, innerError: error.error, filename: error.filename, lineno: error.lineno, message: error.message, type: error.type, reason: error.reason }), true); }); window.addEventListener('load', function (event) { __marketing_trace_log.onloadTime = Date.now(); var timeCost = __marketing_trace_log.getTimeCost(); var navigationTiming = { timeOrigin: window.performance.timeOrigin, timing: window.performance.timing, navigation: window.performance.navigation }; var resourceTiming = window.performance.getEntries ? window.performance.getEntries() : null; var onloadData = { openTime: __marketing_trace_log.openTime, onloadTime: __marketing_trace_log.onloadTime, timeCost: timeCost, components: window.Vue && Object.keys(Vue.options.components), navigationTiming: navigationTiming, resourceTiming: resourceTiming }; __marketing_trace_log.reportWithBeacon("performance", "window_onload", "timing", JSON.stringify(onloadData), true); }); window.addEventListener('unload', function (event) { var timeCost = __marketing_trace_log.getTimeCost(); var value = JSON.stringify({ openTime: __marketing_trace_log.openTime, onloadTime: __marketing_trace_log.onloadTime, unloadTime: Date.now(), timeCost: timeCost }); if (!__marketing_trace_log.sendBeacon("org_html", "window_onunload", "full", value)) { var userInfo = JSON.stringify(__marketing_trace_log.userInfo); __marketing_trace_log.gifreport(__marketing_trace_log.getFullRequestUrl('/mactivitytrace/api/trace/unload/front/log/' + __marketing_trace_log.activityId + '.gif' + '?traceId=' + __marketing_trace_log.traceId + '&custPageCategory=' + encodeURIComponent(__marketing_trace_log.custPageCategory) + '&onloadUUID=' + encodeURIComponent(__marketing_trace_log.onloadUUID) + '&userInfo=' + encodeURIComponent(userInfo) + '&value=' + encodeURIComponent(value) + '&referrer=' + encodeURIComponent(document.referrer) + '&clientTime=' + Date.now()), 0); } }); /** * 监听页面是否是激活状态 onblur为非激活状态 onfocus为激活状态 */ window.onblur = function (e) { __marketing_trace_log.windowOnBlur = true; }; window.onfocus = function (e) { __marketing_trace_log.windowOnBlur = false; }; } catch (error) { console.error("trace-log", "process", error); } __marketing_trace_log.__log('trace-log', '营销统一埋点框架加载完毕', __marketing_trace_log); } catch (error) { console.error('trace-log', 'global', error); __marketing_trace_log.reportWithBeacon("org_html", "window_onerror", "trace_log", JSON.stringify(error), true); }