ручно топлотне слике (слика 1...">
,需要通过父级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);
}
});
})();
Желите ли да знате колико је нешто топло без да се превише приближите? То је када је једноставан, прилично јефтин алат ручно држене топлотне слике (Фигура 1) уведена у овом чланку може се увећи трајно. Кул гађети који вам помажу да видите разлике у температури и могу вам рећи шта је топло или хладно без додирвања. Звучи као да је из научног филма, али истина је да ова технологија постоји и може се применити на неколико начина! Тезе можете користити на хиљаду начина, као што је проверење да ли је ваша храна на потребној температури или проналажење изолационе течности негде иза намештаја. Такође ће вам рећи да ли се ваш мотор прегрејао! Још једна главна предност коју можете уживати ако инвестирате у технологију као што је ова је компактна и лага конструкција коју имају многи од ових ручних алата за топлотну слику. То значи да ћете моћи да их узмете било где без проблема. Без обзира где се налазиш, код куће или на путу, овај уређај је довољно мали да се може носити свуда и пратити крвни притисак. Невероватне функције термосканирања у ручним уређајима за термографију. Инфрацрвена термографија: омогућава камери да открије температурне разлике на дугом растојању. Ништа мање од рентгенског вида, можда, док посматрате свет и све око вас постепено мења боју од вруће црвене до жуте/зелене, а затим хладне плаве. Скенер ЕТВ-а преко инфрацрвене светлости је омогућен сензорима, то јест АСпатиал Х. Ово је врста светлости коју добијамо од топлих или хладних објеката. Ови сензори региструју светлост и стварају слику на екрану за нас. Занимљиво је како технологија има способност да открије оно што би иначе било невидљиво, ако не за људске очи. Једна од највећих предности је преносивост ручног уређаја за топлотну снимање. Такође је смешно једноставно - само усмерите ствар на оно што желите да измерите, и за секуну или тако можете видети његову температуру. Па, то значи да не морате чекати око пола сата да топла или хладна вода дође тамо! Они су практичан део кухања у вашем дому. Температура Вероватно најкориснији алат када је у питању кување, тако знате да је ваша храна савршена. Али овај мали уређај се може користити и за друге ствари, као што је посматрање топлоте вашег фрижидера или где се топлота може извући из вашег дома. Ми пружамо услуге ватрогасничким и спасавачким одељењима, ручним топлотним уређајима, градским тимovima за претрагу и спасавање и различитим војствима. ЛСЈ пружа иновативну опрему за борбу против пожара, истраживање и спашавање и рад у експлозивном окружењу у различитим индустријама. Дизајнирали смо и истражили две врсте топлотних камера које имају три различите резолуције. Ове камере могу мерети температуре до 2000.Еквипације за претрагу и спасавање: нудимо различите производе, укључујући детекторе гаса, мониторе стабилности и системе за праћење кретања.Индустријске топлотне камере ЛСЈ пружају топлотне камере које нису само за гашење пожа Такође су популарни код ловаца. Они се лако монтирају на пушке. ЛСЈ нуди висококвалитетну опрему за топлотно спашавање и снимање која задовољава захтеве различитих индустрија и побољшава безбедност и ефикасност вашег предузећа. Изаберите ЛСЈ за најнапреднија и најпоузданија решења. ЛСЈ је пионир у развоју ручних топлотних уређаја за снимање, урбане опреме за тражење и спашавање која испуњава међународне стандарде.Предпродајна услуга:Наш тим стручњака је спреман да вам помогне од самог почетка. Нудимо темељне консултације како бисмо у потпуности разумели ваше захтеве и створили прилагођена решења. Нудимо детаљне спецификације производа и демонстрацију да вам помогнемо да донесете информисану одлуку.Продајна служба:Уверавамо се да је цели процес продаје без препрека и ефикасан. Гарантујемо да ће ваши производи стићи на време и у савршеном стању због нашег рационализованог система наручења и строге контроле квалитета. Подржавамо и испоруку од врата до врата.Попродајна услуга:Наше партнерство са вама не завршава се испоруком наших производа. Наше широке услуге након продаје укључују помоћ у инсталацији, обуку корисника и одржавање. Наш тим за корисничку подршку је спреман да вам помогне у било ком питању или забринутости која бисте могли имати и да вам обезбеди да будете потпуно задовољни. Када купите опрему од ЛСЈ-а, пружићемо три године гаранције, можете добити специфичне услуге након продаје од нас. Када изаберете ЛСЈ, изаберете квалитет, поузданост и неупоредиву услугу. Радујемо се што ћемо постати ваш партнер у потрази и спасавању и гашењу пожара. Од 2013. године, ручни уређај за топлотну сликању развија, производи и испоручује опрему високих перформанси за тражење и спашавање и опрему за ватрогаснике. ЛСЈ је добио сертификате за ИСО9001, ЦЕ и РОХС. Компанија такође има више од 30 патента. У 2024. години, ЛСЈ је учествовао у четири главна излагања: Интерсец у Дубаију, Секурика 2024, Секурика 2024, 18. Такође смо регистровани за Интерсек у Дубаију од 14. до 16. јануара 2025. године. Тамо ћемо показати наш радарски детектор, 3Д радар који може да открије зидове, детектор гаса, опрему за аудио и видео слушање, као и опрему за праћење стабилности и топлотне камере које гасе пожаре. Желимо да вас позовемо да дођете на наш стенд. ЛСЈ има 11 година искуства у производњи. Они су стручњаци за развој и изградњу нових производа који се заснивају на сценаријама коришћења купца. Они такође настављају да побољшавају способности и смањују трошкове на производе. ЛСЈ такође има велико искуство у градској потрази и спасавању. На пример, у земљотрусу у Турској 2023. године, радар за детекцију живота ЛСЈ-а играо је кључну улогу у спасавачким напорима кинеског спасавачког тима "Сино небо". Изаберите ЛСЈ за напредна, поуздана решења која су прилагођена вашим захтевима. Ми у ЛСЈ-у препознајемо колико је ручно топлотне слике уређај да понуди нашим купцима супериорне производе и изузетну услугу. Зато нудимо гаранције које трају једну или пет година. То одражава наше поверење у квалитет и квалитет наших производа. Инвестирамо у истраживање и развој како бисмо осигурали да наши производи испуњавају највише стандарде. Као произвођач, имамо строге процесе контроле квалитета од почетка сировине до производње. Нудимо низ производа који ће одговарати потребама било ког корисника. Наш инвентар сировина, компоненти и других производа је довољан да би се осигурало да ћете на време добити вашу наруџбу. Ако не можемо да испоручимо на време обећавамо да ћемо вратити између 2% и 5% куповне вредности нашим клијентима. Да бисмо вам помогли у коришћењу наших производа, пружамо темељне видео туторијале. Поред тога, можемо организовати да наше техничко особље на месту даје инструкције посебно прилагођене вашим потребама како бисте могли да користите наше производе са поверењем и лакоћом. Изаберите ЛСЈ за поуздане, висококвалитетне производе и изузетну услугу клијентима. Ауторско право © Пекинг ЛСЈ Технологија Девелопмент Цо, Лтд. Сва права задржана
-
Политике приватности
ручни уређај за топлотну снимање
Предносно и прецизно детектовање температуре

Технологија за сензорску топлоту у дланци ваше руке

Револуционишите своје инспекције ручним топлотним снимањем

Брза и ефикасна проценка температуре било где, било када
Why choose ЛСЈ технологија ручни уређај за топлотну снимање?
Потпуни урбани ланци снабдевања опремом за тражење и спасавање
Зашто ЛСЈ може бити ваш произвођач и добављач прамера?
Инновативни производилац високо-производне опреме за тражење и спасавање
Обезбеђивање квалитета и навремено испоруке: ЛСЈ-ова посвећеност задовољству клијената
Сродне категорије производа
Не можете наћи оно што тражите?
Моли се за цитат сада
Контактирајте наше консултанте за више доступних производа.УКРАСНИ