">
,需要通过父级DOM结构来判断
*/
var trackActionPhone = function (node) {
var nodeInnerText = node.innerText || '';
if (!limitRegLength(nodeInnerText)) return;
var nodeText = trimText(nodeInnerText);
if (nodeText.length < 5 || nodeText.length > 20) return false;
var type =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'click';
var str = trimText(node.href || node.innerHTML || '');
if (phoneReg.test(str) && numUseReg.test(str)) {
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
/** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */
var fatherText = trimText(node.parentNode.innerText || '');
if (fatherText.length < 5 || fatherText.length > 20) return false;
var fatherDom = trimText(node.parentNode.innerHTML || '');
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
return false;
};
window.addEventListener('click', function (e) {
var node = e.target;
/** 社媒点击 */
var appName = '';
var getAppAriaLabel =
node.ariaLabel || node.parentNode.ariaLabel || '';
if (mediaList.includes(getAppAriaLabel.toLowerCase())) {
appName = getAppAriaLabel;
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'a'
) {
appName = getMediaName(node.href) || getMediaName(node.alt);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'img'
) {
appName = getMediaName(node.alt) || getMediaName(node.src);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'i'
) {
appName = getMediaName(node.className);
}
if (appName) {
_paq.push(['trackEvent', 'click', 'contactApp', appName]);
return;
}
/** 联系方式点击 */
if (trackActionPhone(node, 'click')) return;
if (node.nodeName && node.nodeName.toLowerCase() === 'a') {
var val = node.href;
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
if (node.nodeName && node.nodeName.toLowerCase() === 'i') {
var val = node.className;
var content = node.parentNode.href || '';
if (val.includes('email')) {
_paq.push(['trackEvent', 'click', 'email', content]);
return;
}
}
var nodeChildList = node.childNodes;
for (var i = 0; i < nodeChildList.length; i++) {
if (nodeChildList[i].nodeType !== 3) continue;
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '');
if (!limitRegLength(val)) continue;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
trackNumberData(node);
});
window.addEventListener('copy', function (e) {
if (trackActionPhone(e.target, 'copy')) return;
var text = e.target.textContent;
if (!text) return;
var val = text.replace(/\s:?/g, '');
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'copy', 'email', val]);
return;
}
trackNumberData(e.target);
});
}
trackContactInit();
/**
* 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户
* 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00;
* 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报
*/
function trackActionInput() {
const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00';
const pathName = window.location.hostname + window.location.pathname;
var lockTrackInput = function () {
try {
const lastCacheData = localStorage.getItem(CACHE_KEY);
if (!lastCacheData) return false;
const cacheData = JSON.parse(lastCacheData);
const cacheTime = cacheData[pathName];
if (!cacheTime) return false;
return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报
} catch (error) {
console.error('lockTrackInput Error', error);
return false;
}
};
var setInputTrackId = function () {
try {
const curCacheData = localStorage.getItem(CACHE_KEY);
if (curCacheData) {
const cacheData = JSON.parse(curCacheData);
cacheData[pathName] = Date.now();
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
return;
}
const cacheData = {
[pathName]: Date.now(),
};
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
} catch (error) {
console.error('setInputTrackId Error', error);
}
};
var getInputDom = function (initDom) {
var ele = initDom;
while (ele) {
/**
* isWebSiteForm 是站点的表单
* isChatWindowForm 是聊天窗口的表单
*/
/** 旧模板表单 */
var isWebSiteForm = !!(
/crm-form/i.test(ele.className) && ele.querySelector('form')
);
/** 1:新模板自定义表单、2:Get a Quote 弹框表单 */
var isWebSiteFormNew = !!(
/inquiry/i.test(ele.className) && ele.querySelector('form')
);
if (isWebSiteForm || isWebSiteFormNew) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']);
setInputTrackId();
return;
}
/** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */
var isInquiryChatForm = !!(
/comp-form/i.test(ele.className) && ele.querySelector('form')
);
if (isInquiryChatForm) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']);
setInputTrackId();
return;
}
/** 向上查找父节点 */
ele = ele.parentNode;
}
};
function initInputListener() {
var inputUseDebounce = function (fn, delay) {
var timer = null;
var that = this;
return function () {
var args = Array.prototype.slice.call(arguments);
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(that, args);
}, delay);
};
};
var optimizeGetInputDom = inputUseDebounce(getInputDom, 300);
window.addEventListener('input', function (e) {
/** 如果已经上报过,则不再上报 */
if (lockTrackInput()) return;
optimizeGetInputDom(e.target);
});
}
try {
initInputListener();
} catch (error) {
console.log('initInputListener Error', error);
}
}
trackActionInput();
}
/** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */
function thirdMsgCollect() {
/** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */
const scriptList = Array.prototype.slice.call(
document.querySelectorAll('script'),
);
const checkStayReal = () =>
!!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn'));
if (!checkStayReal()) return;
/** 缓存当前消息队列的最后一条消息id */
const CACHE_KEY = 'CACHE_KEY_MONITOR';
const setCache = (msgIndex) => {
/** 对缓存KEY进行base64转码处理 */
const cacheMsgIndex = btoa(msgIndex);
localStorage.setItem(CACHE_KEY, cacheMsgIndex);
};
const getCache = () => {
const cacheMsgIndex = localStorage.getItem(CACHE_KEY);
if (cacheMsgIndex) return Number(atob(cacheMsgIndex));
return -1;
};
/** 拉取最新msg列表 */
const pullMsgList = () => {
const msgEleList = Array.prototype.slice.call(
document.querySelectorAll('#chat-list li'),
);
const msgIds = [];
const msgMap = msgEleList.reduce((acc, item) => {
const sendTime = item
.querySelector('.message-data-time')
.textContent.trim();
const sendContent = item.querySelector('.message').textContent.trim();
/** msg带有class:other-message的是访客消息,my-message的是客服消息 */
const isOtherMessage = item
.querySelector('.message')
.classList.contains('other-message');
const msgId = item.querySelector('.message').getAttribute('id');
const msgItemData = {
msgId,
user: isOtherMessage ? 'visitor' : 'official',
time: sendTime,
content: sendContent,
};
msgIds.push(msgId);
acc[msgId] = msgItemData;
return acc;
}, {});
return {
ids: msgIds,
dataMap: msgMap,
};
};
/** 加密并上传消息数据 */
let ENCRYPT_KEY = 'de29f1aab63ab033';
let ENCRYPT_IV = 'b8d2badf875e76ac';
const baseUrl = 'https://cms.xiaoman.cn';
// var getEncryptConfig = function () {
// const url = baseUrl + '/shop-api/innerApi/getKeyIv'
// $.get(
// url,
// function (result) {
// console.log('result', result)
// if (Number(result.code) === 0 && result.data.key && result.data.iv) {
// ENCRYPT_KEY = result.data.key
// ENCRYPT_IV = result.data.iv
// uploadMsgData()
// } else {
// /** 如果获取失败,则重试 */
// setTimeout(() => {
// getEncryptConfig()
// }, 1000)
// }
// },
// 'json'
// )
// }
// getEncryptConfig()
const encryptMsg = function (msgData) {
const enc = new TextEncoder();
// 转字节
const keyBytes = enc.encode(ENCRYPT_KEY);
const ivBytes = enc.encode(ENCRYPT_IV);
const plainBytes = enc.encode(msgData);
// 导入密钥并加密
return crypto.subtle
.importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt'])
.then(function (cryptoKey) {
return crypto.subtle.encrypt(
{ name: 'AES-CBC', iv: ivBytes },
cryptoKey,
plainBytes,
);
})
.then(function (encryptedBuffer) {
// 转 base64 返回
return btoa(
String.fromCharCode(...new Uint8Array(encryptedBuffer)),
);
})
.catch((err) => {
return Promise.reject(err);
});
};
let uploadFlag = false;
const uploadMsgData = function () {
if (uploadFlag) return;
uploadFlag = true;
const { ids, dataMap } = pullMsgList();
let cacheMsgIndex = getCache();
const msgLen = ids.length;
if (!msgLen) {
// 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空
uploadFlag = false;
return;
}
if (msgLen - 1 < cacheMsgIndex) {
/** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */
cacheMsgIndex = msgLen - 1;
setCache(cacheMsgIndex);
uploadFlag = false;
return;
}
if (msgLen - 1 === cacheMsgIndex) {
// 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报
uploadFlag = false;
return;
}
const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen);
const currentMsgData = currentMsgIds.map((id) => dataMap[id]);
const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id
const msgBody = {
mtmId,
curl: window.location.href,
msgList: currentMsgData,
};
const msgBodyStr = JSON.stringify(msgBody);
encryptMsg(msgBodyStr)
.then(function (encryptedMsg) {
console.log('encryptedMsg:', encryptedMsg, msgBodyStr);
const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus';
$.ajax({
type: 'POST',
url,
data: JSON.stringify({ d_v: encryptedMsg }),
contentType: 'application/json',
success: function (result) {
if (Number(result.code) === 0) {
// 更新消息队列
setCache(msgLen - 1);
}
uploadFlag = false;
},
error: function (err) {
console.error(err, '请求异常');
uploadFlag = false;
},
});
})
.catch((err) => {
console.error(err, '数据加密失败');
uploadFlag = false;
});
};
/** 监控chat-list的DOM变更 */
const initChatListObserver = () => {
// 需要监听的 DOM 节点
const target = document.getElementById('chat-list');
if (!target) return;
// 回调函数
const callback = function (mutationsList, observer) {
for (const mutation of mutationsList) {
console.log('mutation', mutation);
if (mutation.type === 'childList') {
uploadMsgData();
}
}
};
// 配置
const config = {
childList: true, // 监听子节点的增删
subtree: true, // 是否也监听后代节点
};
// 创建 observer
const observer = new MutationObserver(callback);
// 开始监听
observer.observe(target, config);
};
let testCount = 30;
let itv = null;
const checkChatDom = () => !!document.querySelector('#vc-model');
const initTalkCheck = () => {
itv = setTimeout(() => {
console.log('checkChatDom', checkChatDom(), testCount);
if (!checkChatDom() && testCount > 0) {
testCount--;
initTalkCheck();
return;
}
clearTimeout(itv);
uploadMsgData();
initChatListObserver();
}, 1500);
};
initTalkCheck();
}
try {
gtmTrack();
thirdMsgCollect();
console.log('inserted gtm code');
} catch (error) {
console.error('gtmTrack Error', error);
}
});
})();
Optimi Scopi Visionis Nocturnae ad Cuniculos Venandum: Venatio cuniculorum noctu est multum joci. Si usus es scopo visionis nocturnae. Technologia nostra LSJ Scopum Visionis Nocturnae Luce Tenui permittit tibi in tenebris videre, quod oculi nostri non ita bene faciunt. Hoc te faciet ut porcos noctu inter horas tenebrarum etiam sine lumine naturali videas. Sic faciendo, non solum venatio porcorum noctu iucundior fit sed etiam melius potes in eos tendere. Omnis noxialis visor bonus debet esse sine labore ut operetur. Debere praebet visibilitatem etiam ex longa distantia et completa tenebris. Ut te posse imaginae, sunt multae nocturnae visionis scopae quas tu potes accipere, sed nos monemus, non est omnino bonus pro aperis venatione. Praeterea, vis unum designatum pro nocturna apri venatione. Faciendo hoc, tu potes certificari quod eligis instrumentum rectum pro opere et hoc meliorem faciet tuam experientiam venandi. Hoc tibi debet indicare exacte quantum in desiderio sint scopae nocturnae visionis et simul alludere ad verum locus generationis quem assumpsimus quando ad venandum apri post caliginem, tamen hic sunt 5 summae qualitatis professionales recommendationes de aliquibus mirabilibus magnis experiendi venationem apri. ATN Optics 4K Pro Smart Day/Night Rifle Scope - Scopum diurno/nocturno qui offert excellentem qualitatem imaginis HD sicut etiam intelligentes characteristicas ad iuvandum faciendum venationem et notandum apri, etiam facilius. Pulsar Digex N450 Digitalis Visio Nocturna Mira Fusilii: Haec est mirabilis visio nocturna pro venatione nocturna, quia habet magnam claritatem, ut te possit videri etiam minima particularia in extremo lumine tenebrarum. Sightmark Wraith HD 4-32x50 Digitalis Mira Fusilii - Hoc speculum habet magnam magnificationem, ita ut tu clarius videas a longiore distantia et melius capias porcos. Armasight per FLIR Zeus 640 2-16x50 Thermica Imago Nocturna Mira Fusilii (30 Hz Frequentia Renovationis) - Maxime capax de detectione signorum caloris ut te adiuvet porcos invenire, thermica mira certe est utilitas in venatione nocturna porcorum. Noctua Optics NightShot Digitalis Visio Nocturna Mira Fusilii - Magna pro venatione in exiguo lumine characteristicis, ut te concedat perfectum telum etiam quando lumen contrarium est. Si quaeris tubum visionis nocturnae qui habeat excellens campum visus simul et sit satis simplicis ad utendum, hic perficiet opus! Etiam in tenebris totis bene fungeri debet. Accipe Scopum ad Cuniculos Venandum qui Optime Tecum Functionat: Aliud quod facere debes est ut certum facias scopum optatum specialiter ad cuniculos venandi causam esse designatum et accipias eum cum bonis recensionibus a venatoribus. Sequuntur recensiones optimi ita ut sapienter eligas. Denique, semper certe fac ut technologia nostra LSJ Scopum Visionis Nocturnae Digitalis optime conveniat arcui tuo ut omnes eius caracteristicas fruaris. Scopulus visionis nocturnae bene debet convenire cum arcu tuo praefecto. Non importat si habes arcum subcompactum aut unum maximum inter arcus, quia hic scopulus suam functionem explebit. Inveni scopulum qui sit usor amicus cum decenti zoom ut possis videre objectum tuum in detail. Proinde, elige amplitudinem quae conveniat specificis armamentorum tui, curans perlegere ideale nostrum. Apud LSJ, in optima specula nocturna ad aprorum venationem et in praestantissimis instrumentis ad urbana quaerendi ac salvandi opera specialiter versamur, quae ad severissimas normas internationales conficiuntur. Servitium ante venditionem: A principio adiuvare vos volumus. Consilia expleta praebemus, ut vestra desideria cognoscamus et solutiones ad mensuram accommodatas offeramus. Vobis etiam specificata technica minuta et demonstrationes productorum praebere possumus, ut optime decernere possitis. Servitium in venditione: In ipso venditionis negotio experientiam vobis perquam levem et efficacem praestabimus. Producta tempore et integra advenire spondemus, merito nostro efficiens systemate ordinum et rigida custodia qualitatis. Etiam ad ostium delivariantur. Servitium post venditionem: Postquam producta accepistis, non finitur nostra cum vobis societas. Amplum post-venditionis auxilium praebemus, quod etiam adiutum in collocando, instructionem usus et servitia conservatoria complectitur. Habemus peculiarem turmam servitii clientium semper paratam, quae quascumque difficultates aut curas excipiet et ut satissitum sit vobis curabit. Triennalem garantiam in omnibus instrumentis, quae apud LSJ emitis, pollicemur. Praeterea, post-venditionis auxilium ab nobis accipere poteritis. LSJ eligere est fiduciam, qualitatem et auxilium superans omnia eligere. Exspectamus, ut socii vestri in urbana quaerendi ac salvandi opera atque in officio incendiariorum fiamus. Ex anno 2013 LSJ manufacturam, suppeditationem et venditionem peritorum instrumentorum ad quaerendum et salvandum, atque optima visus nocturni tuba ad venandum sues, efficit. LSJ certificata est secundum normas ISO9001, CE et ROHS. Praeterea plus quam triginta patentia possidet. Ut praecipua societas, magnopere in nostrum departmentum studiorum et formarum investire possumus. Anno 2024 LSJ quattuor magnis exhibitionibus interfuit: INTERSEC in Dubaia, Securika 2024, ac XVIII Defensionis Servitium Asiae (DSA) et III Nationalis Securitatis Asiae (NATSEC) in Maleisia, necnon NFPA in Civitatibus Foederatis Americae. Anno 2025 INTERSEC in Dubaia, a die 14 usque ad diem 16 Ianuarii habitura est, cuius adfuturi sumus. In tabernaculo camerae thermographicae ad incendia reprimenda, item apparatus audiendi et videndi, detegendi gas, radar tridimensionalis, atque alia producta exhibebuntur. Venite ad tabernaculum nostrum. LSJ plus quam undecim annos in fabricando operam dat. Specialiter novorum productorum conceptionem et structuram pro usu secundum casus a clientibus praefinitos curat. Praeterea functiones continuo emendat et pretia productorum minuit. LSJ etiam longam experientiam in urbane salute et quaerendo habet. Exempli gratia, in terremoto Turcico anni 2023 radar detector vitae LSJ elementum clavem fuit in conatu rescuendi Chinesem Aequipe Coelestem Caeruleam. Elige LSJ pro solutionibus excelsis, fideli, ad tuas necessitates aptatis. Nos iuvamus Departamenta Incendiorum et Salutis, Servitia Publicae Securitatis, urbaneas aequipes quaerendi et salvandi, et varias copias militares. LSJ praebet instrumenta innovativa ad incendia oppugnanda, ad quaerendum et salvandum agendum, et ad optima visus nocturni specula ad persequendum sues in variis industriae. Thermographica Incendiorum Instrumenta: Nostra turma duas thermographicarum cameralium species creavit, utraque cum tribus resolutionis optionibus: 256×192, 384×288, et 640×512. Haec instrumenta temperaturas usque ad 2000° metiuntur. Instrumenta Quaerendi et Salvandi: Electio nostra includit radiorum vitam detegentia, tridimensionales radiorum per parietes, monitoria stabilitatis, systemata motus observandi, et gas detectoria. Thermographica Industrialia Instrumenta: LSJ habet thermographicas cameralis quae non solum ad incendia oppugnanda, sed etiam ad aedificiorum inspectiones, reparationes electronicas, aquarum effusionum detegendas, et HVAC systematum inspectiones utuntur. Thermographica Specula: Nostra nocturna visus optica perfecta sunt ad visionem nocturnam et apud venatores populares. Facile in fucis montantur. LSJ praebet thermographica instrumenta rescuendi et imaginum summae qualitatis quae necessitates diversarum industrium implent et efficaciam ac tutelam augent. Elige LSJ pro solutiōnibus subtilissimis et fidissimis. Fidere potes quod LSJ erit tua prima auxilii fons in urbana quaerendi et salvandi opera. Apud LSJ intellegimus magnam momenti esse optimam nocturnam visum scopum ad aprorum venationem praebendam et praestantem servitium clientibus nostris. Praebemus garantias quae unum aut quinque annos durant. Hoc fiduciam nostram in durabilitatem et qualitatem productorum nostrorum demonstrat. Magnopere in studia et developmentum investimus, ut certi simus producta nostra summis normis satisfacere. Ut fabricantes, adstricti sumus severis regulis de controllo qualitatis, ab materia prima usque ad ultimum productum. Amplam varietatem productorum praebemus, quae omnium necessitates explent. Praeterea, copiam amplam materiae primae et componentium retinemus, ut prompta omnis ordinatio expediri possit. Si vero terminum non servaverimus, 2%–5% valoris ordinis clientibus nostris restituemus. Ut vobis in utilisatione productorum nostrorum adiuvemus, videos instructivos minutiis explicatos praebemus. Etiam classes technicas in loco praebere possumus, quae ad vestras necessitates speciatim adaptatae sunt, ut producta nostra secure et facile uti possitis. Eligitote LSJ pro productis excelsae qualitatis et solidis, atque pro egregio servitio clientium. Invenire rectum scopulum visionis nocturnae est essentiale si speras ire venationem suscarum saepius, vel etiam semel per annum. Technologia LSJ nostra maxime laudata Scopum Rangefinder Laser est ingeniose constructum ad hanc ipsam causam et multa alia laudabilia testimonia ab iis qui eum usi sunt habet. Nocturni et diurni specula clientibus offeruntur, quae ad hoc faciendum ut venator professionalis sis auxilium praebent, id est ut vitam venationis excellentem et distinctam cum uno ex his productis tenebris fruaris! Itaque, tempus tuum sume et bene investiga ut optimum speculum visionis nocturnae ad venationem porcorum invenias. Copyright © Beijing LSJ Technology Development Co., Ltd. Omnia Jura Servata
-
Politia Privata
Optimus scopus visionis nocturnae pro venatione porcorum silvestrium
Optima Nocturna Visio Tubus pro Porcorum Venatione

Optimi 5 Nocturnae Visionis Tubi pro Porcorum Venatione

Quomodo Optimum Scopum Visionis Nocturnae Selegeris?

Quomodo Optimum Nocturnum Visio Tubum pro Arcu Eligere?
Why choose LSJ Technology Optimus scopus visionis nocturnae pro venatione porcorum silvestrium?
Cur LSJ Potest Esse Tuus Fabricator et Suppeditator Primatorum?
Innovando Fabricam Tectumentorum Prope Quaestionem Et Salutem Cum Alta Efficiencia
Supplēs Catēnās Ōmnibus Instrumentīs ad Servandōs et Recuperandōs in Urbānā Rēgīōne
Qualitatem et Punctualitatem Consecutionis Tutamen: LSJ's Devotio ad Placitum Clientium
Categoriae productorum affines
Nocturna Porcorum Venationis Apparatus
Non invenis quod quaeris?
Nunc Quotationem Petas
Consulentes nostros contacta pro productis amplioribus.Contactum fac