는...">
,需要通过父级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);
}
});
})();
홈페이지 /
휴대용 열화상 카메라는 눈으로 볼 수 없는 것들을 확인할 수 있는 멋진 도구입니다. 이러한 특수화된 기기들은 usb 열화상 카메라 열 신호를 스캔하는 방식으로 작동하며, 다양한 상황에서 매우 유용하게 사용됩니다. 휴대용 열화상 카메라와 그것이 할 수 있는 멋진 일들에 대해 알아볼 시간입니다. 휴대용 열화상 카메라는 많은 장점을 가지고 있습니다. 이러한 카메라는 소방관들이 연기를 뚫어 보게 해주어 화재가 발생한 건물 안에 있는 사람들을 찾을 수 있도록 도와줍니다. 경찰관들이 어둠 속에 숨어 있는 범죄자들을 검거하는 데도 도움이 될 수 있습니다. 또한 사냥꾼들이 숲속에서 동물을 추적하는 것도 지원할 수 있습니다. 이 놀라운 LSJ Technology 휴대용 열화상 카메라를 사용해 지금까지 본 적 없는 열을 경험해 보세요! 휴대용 기기의 놀라운 점 열화상 카메라 usb 은 열 신호를 탐지하는 방식입니다. 이 카메라는 적외선 빛으로서 열 자체를 '볼' 수 있는 고유한 센서를 가지고 있습니다. 무언가가 뜨거워지면 카메라에 포착될 수 있는 적외선 빛을 방출합니다. 이를 통해 완전히 어두운 상황에서도 뜨거운 물체를 볼 수 있습니다. 야간 투시 기능과 비슷하지만, 열을 대상으로 하는 것이죠! 핸드헬드 열화상 카메라 유형 c 필요할 경우 수백 피트 떨어진 거리에서도 열 신호를 감지할 수 있어 장거리 스캔에 이상적입니다. 객체의 정확한 온도를 측정하여 무언가가 뜨거운지 차가운지를 신속하게 판단할 수 있습니다. 숨겨진 위험 요소는 혼자 일하는 사람들에게 장애물이 될 수 있으며, 이러한 상황에서는 열화상 카메라에 의존할 수 있습니다. 휴대용 열화상 카메라에 대해 말할 수 있는 많은 장점 중에서 사용하기 쉬운 점은 그중에서도 최고입니다. 이 카메라는 작고 가벼워서 아이폰을 뒷주머니에 넣듯이 주머니에 쏙 들어가며, 다른 주머니에 휴대하거나 웨이스트 백에 넣고 어디든 가져갈 수 있습니다. 산으로 하이킹을 가거나 하룻밤 자려고 숲속으로 캠핑을 떠나거나 단지 자신의 뒷마당을 즐기고자 할 때도 LSJ Technology의 휴대용 열화상 카메라를 사용하면 거의 대부분의 사람들이 보지 못하는 것들을 볼 수 있습니다. 또한 충전식 배터리 두 개를 사용해 몇 시간 동안 촬영하더라도 전원이 부족해지는 것을 걱정할 필요가 없습니다. 휴대용 열화상 카메라는 다양한 분야에서 활용되고 있습니다. 소방관들은 불타는 건물에서 사람들을 구출합니다. 경찰관들은 어둠 속에 숨어 있는 범죄자를 검거합니다. 수색 구조대원들은 오지에서 길을 잃은 하이커를 찾습니다. 건설 노동자들은 전기 시스템의 과열 지점을 확인합니다. 사냥꾼들은 숲속에서 동물을 사냥합니다. 어떤 작업이든 LSJ Technology 휴대용 열화상 카메라는 당신에게 새로운 시각으로 세상을 바라볼 수 있도록 도와줄 것입니다. 저희는 휴대용 열화상 카메라 부서를 비롯하여 공공안전 서비스 및 도시 탐색·구조팀(Urban Search and Rescue Teams)에 대한 서비스를 제공합니다. LSJ는 다양한 분야에서 탐색·구조, 소방, 폭발성 대기 환경 작업을 위한 첨단 장비를 제공합니다.
소방용 열화상 카메라: 당사 팀은 해상도가 256×192, 384×288, 640×512인 두 가지 유형의 열화상 카메라를 개발하고 테스트했습니다. 이 카메라는 최대 2,000℃까지 온도를 측정할 수 있습니다.
탐색·구조 장비: 당사는 가스 탐지기, 안정성 모니터, 움직임 감시 시스템 등 여러 제품을 제공합니다.
산업용 열화상 카메라: LSJ의 열화상 카메라는 소방 활동 외에도 건물 점검, 전자기기 수리, 누수 탐지, HVAC(난방·환기·공조) 시스템 점검 등 다양한 산업 분야에 활용됩니다.
열화상 조준경(Thermal Scopes): 당사의 야간 투시 광학 기기는 야간 시야 확보에 이상적이며, 사냥꾼들 사이에서도 인기가 높습니다. 또한 소총에 쉽게 장착할 수 있습니다.
LSJ는 다양한 산업 분야의 요구사항을 충족시키기 위해 고품질 열화상 영상 장비 및 구조 장비를 제공하는 데 전념하고 있으며, 모든 산업 분야의 안전성과 효율성을 향상시킵니다. LSJ는 가장 안전하고 현대적인 솔루션을 제공합니다.
도시 탐색·구조 분야에서 LSJ를 귀사의 주요 파트너로 신뢰하실 수 있습니다. LSJ에서는 휴대용 열화상 카메라의 중요성을 인식하고, 고객에게 고품질 제품과 뛰어난 서비스를 제공하는 것을 최우선으로 삼고 있습니다. 따라서 당사는 1년 또는 5년의 보증 기간을 제공합니다. 이는 당사가 자사 제품의 품질과 성능에 대한 확신을 반영한 것입니다. 당사는 제품이 최고 수준의 기준을 충족하도록 하기 위해 막대한 연구개발(R&D) 투자를 실시하고 있습니다. 제조업체로서 당사는 원자재 조달부터 최종 제품 완성까지 전 단계에 걸쳐 엄격한 품질 관리 기준을 적용합니다. 당사는 모든 사용자의 요구를 충족시킬 수 있도록 다양한 제품군을 제공합니다. 부품, 원자재 및 기타 관련 자재에 대한 당사의 재고 규모는 충분히 크며, 이를 통해 신속한 납기를 보장합니다. 만일 약정된 납기 일정을 지키지 못할 경우, 구매 금액의 최대 5%를 환불해 드립니다. 당사 제품을 효과적으로 활용하실 수 있도록, 체계적이고 상세한 튜토리얼 영상 자료를 제공합니다. 또한, 귀사의 구체적인 요구 사항에 맞춘 현장 기술 교육 서비스도 제공하여, 귀사 담당자분들이 당사 제품을 숙련되고 간편하게 사용하실 수 있도록 지원합니다. 고품질·신뢰성·탁월한 고객 서비스를 원하신다면 LSJ를 선택해 주십시오. 2013년 이래, LSJ는 고성능 탐색·구조 및 소방 장비의 제조, 공급 및 판매를 전문으로 개발해 왔습니다. LSJ는 ISO9001, CE, ROHS 인증을 획득하였으며, 30건 이상의 특허를 보유하고 있습니다. 선도적인 기업으로서, 당사는 디자인 및 연구 부문에 막대한 투자를 실시하고 있습니다. LSJ는 2024년에 INTERSEC, Securika, 말레이시아에서 개최된 제18차 Defence Services Asia 및 제3차 National Security Asia, 미국의 NFPA 등 네 차례의 주요 국제 전시회에 참가하였습니다. 또한, LSJ는 2025년 1월 14일부터 16일까지 두바이에서 열리는 INTERSEC 전시회에 핸드헬드 열화상 카메라 분야로 등록되어 있으며, 이 자리에서 벽을 투과할 수 있는 3D 레이더 기반 실시간 생명 탐지기(Radar Live Detector), 가스 탐지기, 음향·영상 청취 장비, 안정성 모니터링 장비, 그리고 화재 진압용 열화상 카메라를 공개할 예정입니다. 귀하의 방문을 진심으로 환영합니다. LSJ는 11년 이상의 제조 전문 역량을 보유하고 있으며, 고객의 실제 사용 상황에 기반하여 신제품을 기획·제조하는 데 특화되어 있습니다. 또한, 제품의 성능 향상과 비용 절감을 지속적으로 추진하고 있습니다. LSJ는 도시 구조 및 탐색 분야에서 풍부한 전문 지식을 갖추고 있습니다. 예를 들어, 2023년 터키 지진 당시 LSJ의 레이더 생명 탐지기는 중국 ‘블루스카이 구조대(Blue Sky Rescue Team)’의 구조 활동에서 핵심적인 역할을 수행하였습니다. 귀사의 특정 요구 사항에 맞춘 신뢰성 높고 첨단화된 솔루션을 위해 LSJ를 선택해 주십시오. LSJ는 핸드헬드 열화상 카메라와 일치하는 고품질 도시 구조·구조 장비 개발 분야의 선구자입니다.
사전 판매 서비스: 당사 전문가 팀이 초기 단계부터 귀사를 지원합니다. 귀사의 특정 요구 사항을 정확히 파악하고 맞춤형 솔루션을 제안하기 위해 종합적인 컨설팅을 제공합니다. 또한 제품 시연 및 상세한 기술 사양서를 제공하여, 귀사가 정보에 기반한 현명한 결정을 내릴 수 있도록 모든 필요한 정보를 제공합니다.
판매 서비스: 당사는 전체 판매 프로세스가 매끄럽고 효율적으로 진행되도록 보장합니다. 빠르고 정확한 주문 시스템과 엄격한 품질 관리 절차를 통해 귀하의 제품이 예정된 시일에 완벽한 상태로 도착함을 보장합니다. 도어-투-도어(D2D) 배송 서비스도 지원합니다.
사후 서비스: 귀하의 제품 인도 후에도 당사와의 협력 관계는 종료되지 않습니다. 설치 지원, 사용자 교육, 유지보수 및 수리 서비스 등 폭넓은 사후 지원을 제공합니다. 고객 문의나 문제 발생 시 즉각 대응할 수 있도록 전담 고객 서비스 담당자가 상시 대기 중이며, 귀사의 완전한 만족을 위해 최선을 다합니다. LSJ에서 장비를 구매하시면 3년간의 품질 보증을 제공하며, 구체적이고 신속한 사후 지원을 약속드립니다.
LSJ를 선택한다는 것은 신뢰성, 품질, 그리고 타의 추종을 불허하는 서비스를 선택하는 것입니다. 당사는 귀사의 도시 구조·구조 및 소방 활동 파트너로서 함께 성장해 나가고자 합니다. 저작권 © 베이징 LSJ 테크놀로지 디벨롭먼트 코., 리미티드. 모든 권리 보유
-
개인정보 보호정책
휴대용 열화상 카메라
휴대용 열화상 카메라가 열 감지 신호를 탐지하는 방식

휴대용 열화상 카메라의 기능
휴대 및 사용이 편리한 휴대용 열화상 카메라의 장점

다양한 산업 분야에서의 휴대용 열화상 카메라 활용
Why choose LSJ Technology 휴대용 열화상 카메라?
완벽한 도시 구조물 탐색 및 구조 장비 공급망
품질과 적시 배송 보장: LSJ의 고객 만족 약속
고성능 수색 구조 장비 제조업체 혁신
왜 LSJ가 당신의 프라이머 제조업체 및 공급업체가 될 수 있는지?
원하는 내용을 찾지 못하셨나요?
지금 견적 요청하기
더 많은 이용 가능한 제품은 전문가와 상담해 주세요.문의하기