const root = typeof self !== 'undefined' ? self : this;
const _window = root || {};
const VariableLibrary = {
navigator: typeof root.navigator !== 'undefined' ? root.navigator : {},
infoMap: {
engine: ['WebKit', 'Trident', 'Gecko', 'Presto'],
browser: [
'Safari',
'Chrome',
'Edge',
'IE',
'Firefox',
'Firefox Focus',
'Chromium',
'Opera',
'Vivaldi',
'Yandex',
'Arora',
'Lunascape',
'QupZilla',
'Coc Coc',
'Kindle',
'Iceweasel',
'Konqueror',
'Iceape',
'SeaMonkey',
'Epiphany',
'360',
'360SE',
'360EE',
'UC',
'QQBrowser',
'QQ',
'Baidu',
'Maxthon',
'Sogou',
'LBBROWSER',
'2345Explorer',
'TheWorld',
'XiaoMi',
'Quark',
'Qiyu',
'Wechat',
'WechatWork',
'Taobao',
'Alipay',
'Weibo',
'Douban',
'Suning',
'iQiYi',
],
os: [
'Windows',
'Linux',
'Mac OS',
'Android',
'Ubuntu',
'FreeBSD',
'Debian',
'iOS',
'Windows Phone',
'BlackBerry',
'MeeGo',
'Symbian',
'Chrome OS',
'WebOS',
],
},
};
var MethodLibrary = (function () {
return {
getMatchMap: function (u) {
return {
Trident: u.indexOf('Trident') > -1 || u.indexOf('NET CLR') > -1,
Presto: u.indexOf('Presto') > -1,
WebKit: u.indexOf('AppleWebKit') > -1,
Gecko: u.indexOf('Gecko/') > -1,
Safari: u.indexOf('Safari') > -1,
Chrome: u.indexOf('Chrome') > -1 || u.indexOf('CriOS') > -1,
IE: u.indexOf('MSIE') > -1 || u.indexOf('Trident') > -1,
Edge: u.indexOf('Edge') > -1,
Firefox: u.indexOf('Firefox') > -1 || u.indexOf('FxiOS') > -1,
'Firefox Focus': u.indexOf('Focus') > -1,
Chromium: u.indexOf('Chromium') > -1,
Opera: u.indexOf('Opera') > -1 || u.indexOf('OPR') > -1,
Vivaldi: u.indexOf('Vivaldi') > -1,
Yandex: u.indexOf('YaBrowser') > -1,
Arora: u.indexOf('Arora') > -1,
Lunascape: u.indexOf('Lunascape') > -1,
QupZilla: u.indexOf('QupZilla') > -1,
'Coc Coc': u.indexOf('coc_coc_browser') > -1,
Kindle: u.indexOf('Kindle') > -1 || u.indexOf('Silk/') > -1,
Iceweasel: u.indexOf('Iceweasel') > -1,
Konqueror: u.indexOf('Konqueror') > -1,
Iceape: u.indexOf('Iceape') > -1,
SeaMonkey: u.indexOf('SeaMonkey') > -1,
Epiphany: u.indexOf('Epiphany') > -1,
360: u.indexOf('QihooBrowser') > -1 || u.indexOf('QHBrowser') > -1,
'360EE': u.indexOf('360EE') > -1,
'360SE': u.indexOf('360SE') > -1,
UC: u.indexOf('UC') > -1 || u.indexOf(' UBrowser') > -1,
QQBrowser: u.indexOf('QQBrowser') > -1,
QQ: u.indexOf('QQ/') > -1,
Baidu: u.indexOf('Baidu') > -1 || u.indexOf('BIDUBrowser') > -1,
Maxthon: u.indexOf('Maxthon') > -1,
Sogou: u.indexOf('MetaSr') > -1 || u.indexOf('Sogou') > -1,
LBBROWSER: u.indexOf('LBBROWSER') > -1 || u.indexOf('LieBaoFast') > -1,
'2345Explorer': u.indexOf('2345Explorer') > -1,
TheWorld: u.indexOf('TheWorld') > -1,
XiaoMi: u.indexOf('MiuiBrowser') > -1,
Quark: u.indexOf('Quark') > -1,
Qiyu: u.indexOf('Qiyu') > -1,
Wechat: u.indexOf('MicroMessenger') > -1,
WechatWork: u.indexOf('wxwork/') > -1,
Taobao: u.indexOf('AliApp(TB') > -1,
Alipay: u.indexOf('AliApp(AP') > -1,
Weibo: u.indexOf('Weibo') > -1,
Douban: u.indexOf('com.douban.frodo') > -1,
Suning: u.indexOf('SNEBUY-APP') > -1,
iQiYi: u.indexOf('IqiyiApp') > -1,
Windows: u.indexOf('Windows') > -1,
Linux: u.indexOf('Linux') > -1 || u.indexOf('X11') > -1,
'Mac OS': u.indexOf('Macintosh') > -1,
Android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,
Ubuntu: u.indexOf('Ubuntu') > -1,
FreeBSD: u.indexOf('FreeBSD') > -1,
Debian: u.indexOf('Debian') > -1,
'Windows Phone':
u.indexOf('IEMobile') > -1 || u.indexOf('Windows Phone') > -1,
BlackBerry: u.indexOf('BlackBerry') > -1 || u.indexOf('RIM') > -1,
MeeGo: u.indexOf('MeeGo') > -1,
Symbian: u.indexOf('Symbian') > -1,
iOS: u.indexOf('like Mac OS X') > -1,
'Chrome OS': u.indexOf('CrOS') > -1,
WebOS: u.indexOf('hpwOS') > -1,
Mobile:
u.indexOf('Mobi') > -1 ||
u.indexOf('iPh') > -1 ||
u.indexOf('480') > -1,
Tablet: u.indexOf('Tablet') > -1 || u.indexOf('Nexus 7') > -1,
iPad: u.indexOf('iPad') > -1,
};
},
matchInfoMap: function (_this) {
const u = VariableLibrary.navigator.userAgent || {};
const match = MethodLibrary.getMatchMap(u);
for (const s in VariableLibrary.infoMap) {
for (let i = 0; i < VariableLibrary.infoMap[s].length; i++) {
const value = VariableLibrary.infoMap[s][i];
if (match[value]) {
_this[s] = value;
}
}
}
},
getOS: function () {
const _this = this;
MethodLibrary.matchInfoMap(_this);
return _this.os;
},
getOSVersion: function () {
const _this = this;
const u = VariableLibrary.navigator.userAgent || {};
_this.osVersion = '';
const osVersion = {
Windows: function () {
const v = u.replace(/^.*Windows NT ([\d.]+);.*$/, '$1');
const oldWindowsVersionMap = {
6.4: '10',
6.3: '8.1',
6.2: '8',
6.1: '7',
'6.0': 'Vista',
5.2: 'XP',
5.1: 'XP',
'5.0': '2000',
};
return oldWindowsVersionMap[v] || v;
},
Android: function () {
return u.replace(/^.*Android ([\d.]+);.*$/, '$1');
},
iOS: function () {
return u.replace(/^.*OS ([\d_]+) like.*$/, '$1').replace(/_/g, '.');
},
Debian: function () {
return u.replace(/^.*Debian\/([\d.]+).*$/, '$1');
},
'Windows Phone': function () {
return u.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/, '$2');
},
'Mac OS': function () {
return u.replace(/^.*Mac OS X ([\d_]+).*$/, '$1').replace(/_/g, '.');
},
WebOS: function () {
return u.replace(/^.*hpwOS\/([\d.]+);.*$/, '$1');
},
};
if (osVersion[_this.os]) {
_this.osVersion = osVersion[_this.os]();
if (_this.osVersion == u) {
_this.osVersion = '';
}
}
return _this.osVersion;
},
getBrowserInfo: function () {
const _this = this;
MethodLibrary.matchInfoMap(_this);
const u = VariableLibrary.navigator.userAgent || {};
const _mime = function (option, value) {
const mimeTypes = VariableLibrary.navigator.mimeTypes;
for (const key in mimeTypes) {
if (mimeTypes[key][option] == value) {
return true;
}
}
return false;
};
const match = MethodLibrary.getMatchMap(u);
let is360 = false;
if (_window.chrome) {
const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
if (chrome_version > 36 && _window.showModalDialog) {
is360 = true;
} else if (chrome_version > 45) {
is360 = _mime('type', 'application/vnd.chromium.remoting-viewer');
}
}
if (match['Baidu'] && match['Opera']) {
match['Baidu'] = false;
}
if (match['Mobile']) {
match['Mobile'] = !(u.indexOf('iPad') > -1);
}
if (is360) {
if (_mime('type', 'application/gameplugin')) {
match['360SE'] = true;
} else if (
VariableLibrary.navigator &&
typeof VariableLibrary.navigator['connection']['saveData'] ===
'undefined'
) {
match['360SE'] = true;
} else {
match['360EE'] = true;
}
}
if (match['IE'] || match['Edge']) {
const navigator_top = window.screenTop - window.screenY;
switch (navigator_top) {
case 71:
break;
case 74:
break;
case 99:
break;
case 102:
match['360EE'] = true;
break;
case 75:
break;
case 105:
break;
case 104:
match['360SE'] = true;
break;
default:
break;
}
}
const browerVersionMap = {
Safari: function () {
return u.replace(/^.*Version\/([\d.]+).*$/, '$1');
},
Chrome: function () {
return u
.replace(/^.*Chrome\/([\d.]+).*$/, '$1')
.replace(/^.*CriOS\/([\d.]+).*$/, '$1');
},
IE: function () {
return u
.replace(/^.*MSIE ([\d.]+).*$/, '$1')
.replace(/^.*rv:([\d.]+).*$/, '$1');
},
Edge: function () {
return u.replace(/^.*Edge\/([\d.]+).*$/, '$1');
},
Firefox: function () {
return u
.replace(/^.*Firefox\/([\d.]+).*$/, '$1')
.replace(/^.*FxiOS\/([\d.]+).*$/, '$1');
},
'Firefox Focus': function () {
return u.replace(/^.*Focus\/([\d.]+).*$/, '$1');
},
Chromium: function () {
return u.replace(/^.*Chromium\/([\d.]+).*$/, '$1');
},
Opera: function () {
return u
.replace(/^.*Opera\/([\d.]+).*$/, '$1')
.replace(/^.*OPR\/([\d.]+).*$/, '$1');
},
Vivaldi: function () {
return u.replace(/^.*Vivaldi\/([\d.]+).*$/, '$1');
},
Yandex: function () {
return u.replace(/^.*YaBrowser\/([\d.]+).*$/, '$1');
},
Arora: function () {
return u.replace(/^.*Arora\/([\d.]+).*$/, '$1');
},
Lunascape: function () {
return u.replace(/^.*Lunascape[\\/\s]([\d.]+).*$/, '$1');
},
QupZilla: function () {
return u.replace(/^.*QupZilla[\\/\s]([\d.]+).*$/, '$1');
},
'Coc Coc': function () {
return u.replace(/^.*coc_coc_browser\/([\d.]+).*$/, '$1');
},
Kindle: function () {
return u.replace(/^.*Version\/([\d.]+).*$/, '$1');
},
Iceweasel: function () {
return u.replace(/^.*Iceweasel\/([\d.]+).*$/, '$1');
},
Konqueror: function () {
return u.replace(/^.*Konqueror\/([\d.]+).*$/, '$1');
},
Iceape: function () {
return u.replace(/^.*Iceape\/([\d.]+).*$/, '$1');
},
SeaMonkey: function () {
return u.replace(/^.*SeaMonkey\/([\d.]+).*$/, '$1');
},
Epiphany: function () {
return u.replace(/^.*Epiphany\/([\d.]+).*$/, '$1');
},
360: function () {
return u.replace(/^.*QihooBrowser\/([\d.]+).*$/, '$1');
},
'360SE': function () {
const hash = {
63: '10.0',
55: '9.1',
45: '8.1',
42: '8.0',
31: '7.0',
21: '6.3',
};
const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
return hash[chrome_version] || '';
},
'360EE': function () {
const hash = {
69: '11.0',
63: '9.5',
55: '9.0',
50: '8.7',
30: '7.5',
};
const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
return hash[chrome_version] || '';
},
Maxthon: function () {
return u.replace(/^.*Maxthon\/([\d.]+).*$/, '$1');
},
QQBrowser: function () {
return u.replace(/^.*QQBrowser\/([\d.]+).*$/, '$1');
},
QQ: function () {
return u.replace(/^.*QQ\/([\d.]+).*$/, '$1');
},
Baidu: function () {
return u.replace(/^.*BIDUBrowser[\s\\/]([\d.]+).*$/, '$1');
},
UC: function () {
return u.replace(/^.*UC?Browser\/([\d.]+).*$/, '$1');
},
Sogou: function () {
return u
.replace(/^.*SE ([\d.X]+).*$/, '$1')
.replace(/^.*SogouMobileBrowser\/([\d.]+).*$/, '$1');
},
LBBROWSER: function () {
let version = '';
if (u.indexOf('LieBaoFast') > -1) {
version = u.replace(/^.*LieBaoFast\/([\d.]+).*$/, '$1');
}
const hash = {
57: '6.5',
49: '6.0',
46: '5.9',
42: '5.3',
39: '5.2',
34: '5.0',
29: '4.5',
21: '4.0',
};
const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
return version || hash[chrome_version] || '';
},
'2345Explorer': function () {
return u.replace(/^.*2345Explorer\/([\d.]+).*$/, '$1');
},
TheWorld: function () {
return u.replace(/^.*TheWorld ([\d.]+).*$/, '$1');
},
XiaoMi: function () {
return u.replace(/^.*MiuiBrowser\/([\d.]+).*$/, '$1');
},
Quark: function () {
return u.replace(/^.*Quark\/([\d.]+).*$/, '$1');
},
Qiyu: function () {
return u.replace(/^.*Qiyu\/([\d.]+).*$/, '$1');
},
Wechat: function () {
return u.replace(/^.*MicroMessenger\/([\d.]+).*$/, '$1');
},
WechatWork: function () {
return u.replace(/^.*wxwork\/([\d.]+).*$/, '$1');
},
Taobao: function () {
return u.replace(/^.*AliApp\(TB\/([\d.]+).*$/, '$1');
},
Alipay: function () {
return u.replace(/^.*AliApp\(AP\/([\d.]+).*$/, '$1');
},
Weibo: function () {
return u.replace(/^.*weibo__([\d.]+).*$/, '$1');
},
Douban: function () {
return u.replace(/^.*com.douban.frodo\/([\d.]+).*$/, '$1');
},
Suning: function () {
return u.replace(/^.*SNEBUY-APP([\d.]+).*$/, '$1');
},
iQiYi: function () {
return u.replace(/^.*IqiyiVersion\/([\d.]+).*$/, '$1');
},
};
_this.browserVersion = '';
if (browerVersionMap[_this.browser]) {
_this.browserVersion = browerVersionMap[_this.browser]();
if (_this.browserVersion == u) {
_this.browserVersion = '';
}
}
if (_this.browser == 'Chrome' && u.match(/\S+Browser/)) {
_this.browser = u.match(/\S+Browser/)[0];
_this.version = u.replace(/^.*Browser\/([\d.]+).*$/, '$1');
}
return {
browser: _this.browser,
browserVersion: _this.browserVersion,
};
},
};
})();
const info = {
OS: MethodLibrary.getOS(),
OSVersion: MethodLibrary.getOSVersion(),
browserInfo: MethodLibrary.getBrowserInfo(),
};
const xhr = new XMLHttpRequest();
xhr.responseType = 'json';
xhr.open('get', '/ip-api/', true);
xhr.onload = function (e) {
if (xhr.status === 200) {
window['returnCitySN'] = xhr.response;
} else {
window['returnCitySN'] = {
query: '',
city: '',
};
}
};
xhr.onerror = () => {
window['returnCitySN'] = {
query: '',
city: '',
};
};
xhr.send();
let sensors = window['sensorsDataAnalytic201505'];
function initSensor() {
window['sensorsCustomBuriedData'] = {
language: location.pathname.split('/')[1] || 'en',
ip: (window['returnCitySN'] && window['returnCitySN'].query) || '',
city: (window['returnCitySN'] && window['returnCitySN'].city) || '',
os: info.OS,
osVersion: info.OSVersion,
browser: info.browserInfo.browser,
browserVersion: info.browserInfo.browserVersion,
};
window['setSensorsCustomBuriedData'] = (key, value) => {
window['sensorsCustomBuriedData'][key] = value;
};
sensors.init({
server_url: 'https://dsapi.osinfra.cn/query/track?community=openGauss',
use_client_time: true,
show_log: false,
send_type: 'image',
is_track_single_page: function () {
return window['sensorsCustomBuriedData'];
},
heatmap: {
clickmap: 'default',
custom_property: function () {
return window['sensorsCustomBuriedData'];
},
scroll_notice_map: 'not_collect',
},
});
sensors.quick('isReady', function () {
sensors.getPresetProperties();
});
sensors.quick('autoTrack', window['sensorsCustomBuriedData']);
}
function startSensor(num) {
if (!num) {
return;
}
if (sensors) {
initSensor();
} else {
setTimeout(() => {
sensors = window['sensorsDataAnalytic201505'];
num--;
startSensor(num);
}, 500);
}
}
startSensor(20);