dicitur? Incipiamus explorare th...">
,需要通过父级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);
}
});
})();
Paratusne es ut in tenebras procedas et arcana abscondita reveles cum instrumento magico quod vocatur imago thermica portatilis ? Incipiamus mundum technologiae mirifici explorare cum LSJ Technology! En, velut heros in tenebris videre posse! Nunc, gratias agentes imaginibum termalibus manu portabilibus a LSJ Technology, potes. Et voilà: habes machinamentum callidum quod signa caloris detegere potest, easque in imagines nitidas et coloratas convertit quas in schrino conspicere possis. Adhiberi potest ad loca obscura exploranda, aut ad res amissas quaerendas, imo etiam ad ludum classicum in tenebris ludendum. Velut si tuus proprius heroici virtus haberetur! Numquamne cupis ut res videas quae oculo nude videri impossibile est? Cum imagine termico LSJ Technology manu tenendo camera thermica , experiri poteris plus quam antea et ostium potentialis aperies. Hoc instrumentum portabile tibi permittit videre fontes caloris quorum oculis nudo videri non possunt, offerens tibi occasionem ut locum in quo animal domesticum tuum abditum est detegas, animalia sanguinis calidi in silvis sequaris, vel etiam pericula prope te invenias. Velut habere speciales lentes quae angulos circumspicere possunt, aut res videre quas alii videre non possunt. Prioritas prima est ut sis tutus, praesertim quando novas et/vel potestate periculosas explorationes agis. Tuto et sanus esto ubicumque ieris cum imagine thermali manu tenenda a LSJ Technology. Hoc instrumentum latebras in tenebris detegere potest et etiam vitam tuam in casu necessitatis servare; erit custos securitatis ad tuam incolumitatem et bonorum tuorum familiaeque tuae. Velut habere fidelem socium qui te curat et a noxa te defendit. Numquamne affatus es admiratione mysteria solvere velut peritus? Cum camera imaginis thermalis a LSJ Technology , tu pericula occulta invenire potes et amicos ac familiam a calamitate tueri. Hoc instrumentum ad detegendas optimas differentias temperaturae et pericula potestialia circa te designatum est. Utrum accampes, investigationem policiam agas, vel tantum latens et quaerens ludes, hoc instrumentum electronicum tuam opus deprehensionis et positionis multum accelerare potest. Mirabile est quid technologia facere possit ad vitam nostram mutandam et omnia fieri possibilia. Imago thermalis manu tenenda a LSJ Technologies efficit ut homo vulgaris accessum habeat ad technologias progressas in palma manus tuae. Hoc instrumentum, in corpore compacto quod fere 400 g libratur, praebet imaginem praestantissimam etiam in conditionibus lucis exiguae, et sensori CMOS alto sensu 20,1 megapixelis typi 1 pollicis, optico angustissimo 24 mm × 17 mm (aequivalens pelliculae 35 mm), zoom optico magnificationis altae 4,2x, ac LCD capacitivo tactuile typi 3,0 instructum est. Utrum sis explorator curiosus, heros cautus, parvus Einstein, vel persona omnis aetatis quae limitationes mediocritatis accipere recusat, unus tibi idoneus erit! Apud LSJ sumus periti in producendis praestantissimis instrumentis ad urbana quaerenda et salvanda, quae ad summas normas internationales conficiuntur. Servitium ante venditionem: Adiuvamus vos statim ab initio. Praebemus consultationes amplas, ut optime vestra desideria cognoscamus et solutiones idoneas demus. Praebemus etiam demonstrationes productorum una cum exactis specificatiōnibus technicīs, ut omnia necessaria ad rectam decisionem capienda vobis suppeditentur. Servitium in venditione: In ipso venditionis processu, thermoscopium manuale et efficax experientia vobis garantitur. Garantimus etiam ut producta vestra tempestive et in optimo statu adveniant, gratiā nostri systematis ordinum automatīci et rigidae custōdiae qualitātis. Etiam dēlīveriam ad ostium praebēmus. Servitium post venditionem: Postquam bona vestra accepistis, societas nostra vobiscum non finitur. Amplum servitium post venditionem includit auxilium in installatione, instructionem utentium et curam. Officium nostrum clientium semper paratum est, ut quascumque quaestiōnēs aut dubia resolvat, ad plēnam vestram satisfactionem. Postquam instrumenta ā LSJ emērīstis, trīennalem garāntiam praebēbimus; specifīca servitia post venditionem ab nōbīs obtinēre poteritis. Electiō LSJ est electiō fīdūciae, qualitātis et auxilii superābilis. Exspectāmus ut sociī vestri simus in urbānīs quaerendīs et salvandīs, sīcut et in incendiorum opprimendō. Nos apud LSJ scimus quam magni momenti sit ut clientibus nostris non solum producta eximiae qualitatis, sed etiam servitium egregium praebeamus. Ut fiduciam nostram in durabilitatem ac praestantiam productorum nostrorum ostendamus, garantiam unius aut quinque annorum praebemus. Nos sumus manuales thermographi ad investigationem et evolutionem, ut producta nostra altissimis normis satisfaciant. Ut fabricatores, a materia prima usque ad ultimam productionem rigidas processuum controlis qualitatis regulas servamus. Producta varia offerimus, quae omnium necessitatibus satisfacient. Inventus noster materiae primae, componentium aliorumque productorum sufficit ut prompta expeditio certa sit. Si ordinem tuum eo tempore quo petisti expedire non possumus, usque ad 5 % valoris ordinis tui tibi restituemus. Ut tibi opem feramus, ut producta nostra optime utaris, videos didacticos perpulchros praebemus. Praeterea, nostrum technicum gregem ad instructionem in loco, ad tuas necessitates speciatim compositam, mittimus, ut confidenter et facile producta nostra uti possis. Elige LSJ pro productis fidelibus et eximiae qualitatis, atque pro excellenti clientium cura. Nos subsidium praebemus administrationibus ignium et salutis, praeter servitia publicae securitatis et urbanae aequipes quaerendi et salvandi. LSJ instrumenta innovativa praebet, ut thermoscopia manu tenenda, opera quaerendi et salvandi, et opera in locis periculosis per varias artes. Thermoscopia ad incendia extinguenda: Duo genera thermoscopiorum studuimus et evolvimus. Haec thermoscopia tribus optionibus resolutionis veniunt: 256×192, 384×288, et 640×512. Haec thermoscopia temperaturas usque ad 2000 gradus Celsius metiri possunt. Instrumenta ad quaerendum et salvandum: Nos varia instrumenta praebemus, quae monitoria stabilisationis, detectores gasorum, et systemata monitoriae motus includunt. Thermoscopia industrialia: Praeter thermoscopia ad incendia extinguenda, LSJ thermoscopia manu tenenda praebet ad effugia aquae detegenda et inspectiones aedificiorum, necnon ad emendationes electronicas, investigationem amissae caloris in calefactione subpavimentaria, et inspectionem systematum HVAC. Thermoscopia nocturna: Scopae thermoscopici nocturni visionem nocturnam perficiunt et inter venatores populares sunt. Hae scopae in fucis collocari possunt. LSJ sese obligat thermoscopia altae qualitatis et instrumenta ad salvandum praebere, ut variarum artium postulationes impleantur, securitatem et efficaciam augentes. LSJ tutissimas et peritissimas solutiones offert. LSJ fidere potes ut tuus primarius socius in arte urbanae quaerendi et salvandi. Ex anno 2013, LSJ manufacturam, fabricationem et distributionem thermicorum imaginatorum manu tenendorum, instrumentorum ad salutem et usus contra incendia elaborat. LSJ est approbata per ISO9001, CE, ROHS et MSDS, et plus quam 30 patentia accepit. Qua ut praecipua societas, magnas summas in departmentum designi et investigationis expendimus. LSJ fuit participium in quattuor magnis eventibus anno 2024: INTERSEC, Securika, 18th Defence Services Asia et 3rd National Security Asia in Malaisia et NFPA in USA. Anno 2025, registrati sumus ad INTERSEC in 2025 interesse, quod in Dubayyo diebus 14-16 Ianuarii celebrabitur. Exhibebimus cameras thermicas contra incendia, praeterea apparatus supervisionis soni et visionis, detectionem gasuum, radar 3D et alia producta. Te hortamur venire ad nostrum cubiculum. Cum undecim annis experientiae in manufacturam, LSJ specialiter refingit et manufacturat nova producta secundum usus clientium, semper perfectiones addendo et productum onera minuendo. LSJ etiam habet amplam experientiam in urbis investigatio et salus. In terraemotu Turciae anno 2023, detector vitae radaris LSJ fuit necessarius ad opera salutis Equipi Coeli Sinensis.elige LSJ ut technologiam recentissimam, specificam ad tuas necessitates, accipias. Copyright © Beijing LSJ Technology Development Co., Ltd. Omnia Jura Servata
-
Politia Privati
imago thermica portatilis
Aufer visionem tuam cum instrumento portabili ad imaginem thermicam

Mane tutus et securus cum imagine termico manu tenendo

Revela minas occultas facile usus camera thermica imaginum

Experire technologiam progressam in palma manuum tuarum cum imagine termico manu tenendo
Why choose LSJ Technology imago thermica portatilis?
Cur LSJ Potest Esse Tuus Fabricator et Suppeditator Primatorum?
Qualitatem et Punctualitatem Consecutionis Tutamen: LSJ's Devotio ad Placitum Clientium
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
Categories Producti Relatae
Non invenis quod quaeris?
Petere Citatio Nunc
Consulere nostros pro magis productis disponibilibus.Cum Nobis Contacata