a LSJ Technology! Haec camerae capaces sunt...">
,需要通过父级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);
}
});
})();
Cogita de rebus videndis quas alii videre non possunt. Nunc fieri potest altissima resolutione scelerisque Imaging Cameras a LSJ Technology! Haec camerae photographias summa cum diligentia capere possunt et nobis ostendere possunt quae numquam umquam imaginati sumus. Thermale imaginum altioris resolutionis, sive in systemate observationis sive in instrumentis medicis usum, nobis adiuvat anomalias pridem detegere, ut eis respondeamus plene consciis de situ, et quanto magis tanto melius. Unum ex praecipuis usibus camerae thermographicae altioris definitionis est securitatem et tutelam promovere. Haec instrumenta signa calorifica longius posita detegere possunt, ut pericula potissima antea videas quam emergant. Incendio extinguendi ministri cameras thermographicas utuntur, ut per aedificia fumo plena videant atque eos qui opus habent liberatione agnoscant. Similiter, custodes his cameris uti possunt, ut spatia ampla perspicient atque omnia insolita animadvertant. Securitas et tutela faciliores sunt quam unquam, merito camerarum thermographicarum altioris resolutionis quae a LSJ Technology fiunt! Tertia, exsulans via est ut imaginum thermicarum altissimae resolutionis novas absconditas perspectivas aperire possint. Hi cameras res oculis humanis invisibiles videre possunt per imagines minutas et figuras et ortus tendentiarum. Ab animalium vita intellegenda usque ad conditiones medicas diagnostica, quaestores et scientiarii in variis usibus imaginibus thermicis altissimae resolutionis confidunt. Cum cameris LSJ Technology ultimae generationis – optiones inveniendi INFINITAE sunt! In campo variationis thermometrorum, nihil est quod possit aequari cum praecisione camerae thermographicae altioris resolutionis. Etiam minima mutationes in temperatura ab his cameris detegi possunt, ut quaestiones antequam fiunt verae difficultates invenire possimus. Velut usus camerae thermalis in aedificiorum constructione perfecte revelare potest effusiones caloris et defectus in isolatione. In loco medico etiam, hae camerae accuratissime loca inflammationis vel infectionis detegere possunt. Invenire loca differentiarum thermometricarum cum cameris thermalibus Technology LSJ numquam fuit tam facilis et fidus! Altissima resolutio et imaginum thermicarum generatio vera quidem rerum permutatio in pluribus industriae generibus est. In applicationibus quae ex agrorum cultura ad aeroespantium, a coercitione legum ad observationem ambientis pertingunt, hae camerae noscum modo mundum videndi mutant. Limen tollitur cum technologia summa – a LSJ Technology Imagines Thermicae Definitionis Altissimae iam faciliores fiunt et ad omnes magis accedunt, ab iis qui securitatem curant usque ad domesticas et commerciales applicationes. Quaecumque tua industria sit, camere imaginum thermicarum altissimae resolutionis a LSJ Technology tibi ostendunt quae antea videre non potueras! Servitia nostra pro departmentis cameralium thermographicarum altissimae resolutionis praebemus, simul cum servitiis Publicae Securitatis et urbanae quaestionis ac salutis (USAR) turmis. LSJ instrumenta novissima pro quaerendo et salvando, incendia oppugnando, atque in atmosphaeris explosivis operando per diversos sectores offert. Camerae Thermographicae pro Incendiis: Egregium nostrum collegium duas cameras thermographicas explevit et examinavit, quae tres optiones resolutionis habent: 256×192, 384×288, et 640×512. Haec camerae temperaturas usque ad 2000° metiri possunt. Instrumenta pro Quaerendo et Salvando: Plura producta, ut detectores gasorum, monitoria stabilitatis, et systemata monitoriae motus, offerimus. Camerae Thermographicae Industriales: LSJ camerae thermographicas praebet, quae non solum pro incendiis, sed etiam pro inspectionibus aedificiorum, reparationibus electronicis, detectione percolationum aquarum, et inspectione systematum HVAC utuntur. Scopae Thermographici: Optica nostra nocturna ad visibilitatem nocturnam optima sunt; etiam apud venatores populares sunt. Facile in fucis montari possunt. LSJ se devovet praebendis instrumentis thermographicis et salutis excelsae qualitatis, ut necessitates diversorum industriarum impleantur, tutelam et efficaciam omnium industriarum augens. LSJ solutiones tutissimas et modernissimas praebet. LSJ fidere potes ut socius tuus primarius in urbana quaerenda et salvanda. Ex anno 2013 LSJ fabricandorum, suppeditandorum et vendendorum camerae thermographicae altissimae resolutionis atque camerae ad quaerendum et salvandum praestantissimae operam dat. LSJ certificata est pro normis ISO9001, CE et ROHS. Praeterea plus quam triginta patentia possidet. Ut dux in negotio, magnopere in departmentum studiorum et formarum investire possumus. Anno 2024 LSJ quattuor magnis exhibitionibus interfuit: INTERSEC apud Dubaī, Securika 2024, octavā decimā Defensionis Servitium Asiae (DSA) et tertiā Nationalis Securitatis Asiae (NATSEC) in Maleisia, necnon NFPA in Civitatibus Foederatis Americae. Anno 2025 INTERSEC in Dubaī, mense Ianuario, diebus XIV–XVI, frequentabimus. In tabernaculo camerae thermographicae ad incendia opprimenda, item apparatus ad sonum et imaginem observandam, ad detegendos gases, 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 curat, quae ex usu clientium in variis casibus depromuntur. Praeterea functiones continuo emendantur et pretia productorum minuuntur. LSJ etiam longa experientia in urbane salute et quaerendo pollens est. Exempli gratia, in terrae motu Turciae anni 2023 radar detector vitae LSJ elementum clavale fuit in conatu rescuendi Chinesem Aequoreum Caeruleum Auxilium. Elige LSJ pro solutionibus summae qualitatis, fideli, ad tuas necessitates aptatis. Nos apud LSJ scimus quam magni momenti sit ut clientes nostros praestemus productis summae qualitatis et camera thermographica altae resolutionis. Officimus garantias unius aut quinque annorum, quae fiduciam nostram in durabilitatem diuturnam et in praestationem productorum nostrorum demonstrant. Magna nostra inquisitionis et evolutionis investitio certificat ut producta vestra ad summos normas conformentur. Ut fabrica, rigorem in custodia qualitatis observamus, a materia prima usque ad productionem. Sive privatus cliens, sive distributor, sive particeps licitationis, sive agencia publica estis, latissimam varietatem productorum vobis offertis, quae ad vestras necessitates respondent. Magnitudo inventarii nostri materiae primae, componentium, et aliorum rerum satis magna est ut prompta distributio certificetur. Si non tempestive traducimus, nos obligamus ut usque ad 2–50 % valoris totius ordinis clientibus nostris restituamus. Instructiones minuta et videos vobis praebemus, qui vobis iuvabunt ut producta nostra efficaciter utamini. Praeterea, instructionem technicam personalem in loco, ad vestras necessitates adaptatam, organisare possumus, ut confidenter et facile producta nostra uti possitis. Eligitote LSJ pro productis summae qualitatis et fidelitate, atque pro praestantissimo servitio clientium. Apud LSJ periti sumus in productione instrumentorum altissimae qualitatis ad urbana quaerenda et salvanda, quae ad optima internationalia normativa conficiuntur.
Servitium Antequam Vendatur:
Adiuvare vos statim ab initio volumus. Consultationes amplas praebemus, ut vestrae singulares necessitates cognoscantur et solutiones ad mensuram offerantur. Specificata technica minuta praebemus, itemque demonstrationes productorum, ut recta iudicia facere possitis.
Servitium Venditionis:
Processum venditionis nostrae levem et efficacem esse curamus. Producta vestra tempore advenire et in optimo statu, propter simplicem ordinem et rigorem in custodia qualitatis, spondemus. Etiam ad ostium usque delivertionem subministramus.
Servitium Post Venditionem:
Postquam productum vestrum advenit, relatio nostra vobiscum non desinit. Amplum servitium post venditionem includit auxilium in installatione, instructionem utentium, et curam. Turma nostra ad supportum clientium parata est, ut vobis in omnibus dubiis aut difficultatibus subveniat, inter quas et camera thermographica altae resolutionis. Plenam satisfactionem vobis praestabimus. Cum instrumenta a LSJ emeritis, triennalem garantiam praebemus. Auxilium speciale post venditionem ab nobis petere poteritis.
LSJ eligere est qualitatem, servitium, et auxilium incomparabilem eligere. Exspectamus, ut in urbanis quaerendis et salvandis, atque in officio incendiariorum, socius vester fidelis efficiamur. Copyright © Beijing LSJ Technology Development Co., Ltd. Omnia Jura Servata
-
Politia Privati
camera ad imprimendum thermale alta resolutionis
Tutela et securitas augendae sunt altioris resolutionis imagine thermica

Novae perceptiones revelantur clara imagine thermica altioris resolutionis

Praecisio in detegendis variationibus temperaturae cum imagine thermica altioris resolutionis

Muta rerum omnium in pluribus industriae generibus
Why choose LSJ Technology camera ad imprimendum thermale alta resolutionis?
Supplēs Catēnās Ōmnibus Instrumentīs ad Servandōs et Recuperandōs in Urbānā Rēgīōne
Innovando Fabricam Tectumentorum Prope Quaestionem Et Salutem Cum Alta Efficiencia
Qualitatem et Punctualitatem Consecutionis Tutamen: LSJ's Devotio ad Placitum Clientium
Cur LSJ Potest Esse Tuus Fabricator et Suppeditator Primatorum?
Categories Producti Relatae
Non invenis quod quaeris?
Petere Citatio Nunc
Consulere nostros pro magis productis disponibilibus.Cum Nobis Contacata