. VyperIR—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);
}
});
})();
We worden omringd door technologie in de moderne wereld. Een cool stukje technologie dat steeds populairder wordt, is de handbediende IR-camera . VyperIR—De handbediende IR-camera van de toekomst LSJ Technology produceert een geweldige IR-camera die ideaal is om de wereld te ontdekken. Wat je kunt doen met een handheld IR camera is verbazingwekkend. Dit apparaat werkt met behulp van infraroodtechnologie en neemt foto's die eenvoudigweg niet zichtbaar zijn voor het menselijk oog. Door warmte signaturen te detecteren, IR-camera is in staat om een ingewikkeld beeld te genereren dat inzicht geeft in wat er achter deze muren om ons heen verborgen is. Dit is een krachtig hulpmiddel waarmee we kunnen zien wat onze ogen niet kunnen zien en verborgen werelden van informatie kunnen vinden. Bijzonder is dat verborgen details zichtbaar worden in een IR-camera in je hand. De camera gebruikt infraroodtechnologie om oppervlaktetemperaturen te detecteren en deze weer te geven in een gemakkelijk leesbaar formaat. Wanneer een IR-camera op een persoon wordt gericht, zie je de temperatuurgradiënt over hun lichaam, wat gebieden aangeeft met lagere of hogere temperaturen. Dit kan in veel situaties helpen, van het zoeken naar een verloren huisdier in het donker tot het beschermen van je woning tegen lekkages of overstromingen. De kracht van een handheld IR-camera is nog een zeer praktische functie. Deze tool is geschikt voor elke situatie, zowel voor thuistoepassingen als voor gebruik buitenshuis. Of je nu een woning inspecteert, wilde dieren fotografeert in het bos of de nachtelijke hemel verkent, door het draagbare ontwerp is het eenvoudig om de IR-camera overal mee naartoe te nemen. Het handzaam ontwerp is geschikt voor iedereen, ongeacht leeftijd of technisch niveau. De mogelijkheden van creativiteit openen met een draagbare IR-camera is erg cool. Deze tool stelt je in staat om het visuele spectrum van infraroodlicht te verkennen en beelden vast te leggen met een exotische, kleurrijke sfeer die anders onzichtbaar zou zijn voor het blote oog. En doordat je instellingen kunt aanpassen en je opnamen kunt personaliseren, kun je creatievere en indrukwekkendere beelden maken die het moment echt vastleggen. Of je nu fotograaf bent of gewoon houdt van experimenteren, IR-fotografie is iets uiterst leuks om te doen – de effecten die je kunt creëren geven je een compleet andere kijk op de wereld en bieden enorm veel ruimte voor creativiteit en plezier, dus zorg dat je plezier hebt en houd je vinger op de SLUITERKNOOP. Het voelt echt magisch om de wereld in een totaal nieuw licht te zien – met een handbediende IR-camera. Met dit apparaatje ervaar je je omgeving op een nieuwe manier, ontdek je verborgen details en onthul je mysteries die je anders misschien zou zijn ontgaan. Outdoor Explorer-serie Of je nu geïnteresseerd bent in het bestuderen van planten en wilde dieren, of gewoon een beter zicht wilt op de wereld om je heen, deze handbediende poort naar de buitenwereld en de microscopische wereld biedt je een spannend perspectief! Dit slimme kleine apparaat wakkert de nieuwsgierigheid van kinderen aan, stimuleert hun verbeelding en inspireert hen om te groeien en te leren. Wij bieden diensten aan brandweer- en noodhulpdiensten, openbare veiligheidsdiensten, stedelijke reddings- en zoekteams, en andere legermachten. De draagbare IR-camera biedt geavanceerde apparatuur voor het bestrijden van branden, het uitvoeren van zoek- en reddingsoperaties en het werken in gevaarlijke omgevingen binnen een breed scala aan sectoren.
Brandbestrijdings-thermische camera's: Het bedrijf heeft twee typen thermische camera's ontwikkeld en bestudeerd, met drie resolutieopties: 256×192, 384×288 en 640×512. Deze camera's kunnen temperaturen meten tot 2000 °C.
Zoek- en reddingsapparatuur: Onze collectie omvat radarlevensdetectoren, 3D-radars voor door-wanden-scannen, stabiliteitsmonitors, bewegingsbewakingsystemen, evenals gasdetectoren.
Industriële thermische camera's: LSJ levert thermische camera's die niet alleen geschikt zijn voor brandbestrijding, maar ook voor gebouwinspecties, elektronisch onderhoud, detectie van waterlekkages en inspectie van HVAC-systemen.
Thermische vizieren en nachtzichtvizieren: Onze nachtzichtvizieren zijn ideaal voor zichtbaarheid bij nacht en zeer gewaardeerd door jagers. Ze kunnen eenvoudig op geweren worden gemonteerd.
LSJ richt zich erop hoogwaardige thermische beeldvormings- en reddingsapparatuur te leveren die voldoet aan de eisen van diverse sectoren, waardoor de veiligheid en effectiviteit van onze klanten worden verbeterd. LSJ biedt de meest betrouwbare en geavanceerde oplossingen.
Vertrouw op LSJ als uw voornaamste partner voor stedelijke zoek- en reddingsoperaties. LSJ is een marktleider in de productie van hoogwaardige handbediende IR-camera's die voldoen aan internationale normen.
Pre-sales service:
Wij staan u vanaf het begin bij. Wij bieden uitgebreide adviesdiensten om u te helpen uw specifieke behoeften te begrijpen en op maat gemaakte oplossingen te verstrekken. Wij verstrekken technische specificaties en productdemo's om u te ondersteunen bij het nemen van een weloverwogen keuze.
Sales service:
Wij garanderen dat het gehele verkoopproces soepel en efficiënt verloopt. Onze efficiënte handbediende IR-camera's, in combinatie met onze strenge kwaliteitscontroleprocessen, zorgen ervoor dat u uw producten op tijd en in uitstekende kwaliteit ontvangt. Wij bieden ook deur-tot-deurlevering.
After-sales service:
Onze relatie met u eindigt niet zodra u onze producten heeft ontvangen. Wij bieden een breed scala aan after-sales services, waaronder installatiebegeleiding, gebruikersopleiding en onderhoudsdiensten. Wij beschikken over een toegewijde klantenserviceteam dat altijd voor u klaarstaat. Zij helpen u bij eventuele vragen of problemen en zorgen voor uw tevredenheid. Nadat u apparatuur van LSJ hebt aangeschaft, bieden wij een garantie van drie jaar en kunt u specifieke after-sales services bij ons afroepen.
Wanneer u voor LSJ kiest, kiest u voor kwaliteit, betrouwbaarheid en ongeëvenaarde ondersteuning. Wij kijken ernaar uit om uw partner te worden in stedelijke zoek- en reddingsoperaties en bij brandweeractiviteiten. Bij LSJ hechten we als producent van handbediende infraroodcamera's veel waarde aan het leveren van hoogwaardige producten en uitstekende service aan onze klanten. Daarom bieden we garanties van één of vijf jaar. Dit is een bewijs van ons vertrouwen in de kwaliteit en prestaties van onze producten. We investeren aanzienlijke middelen in onderzoek en ontwikkeling om te garanderen dat onze producten voldoen aan de hoogste normen. Als fabrikant hanteren we strenge kwaliteitscontrolestandaarden, vanaf het begin tot het eindproduct. We bieden een breed scala aan producten om aan de behoeften van alle gebruikers te voldoen. Onze voorraad onderdelen, grondstoffen en andere artikelen is groot genoeg om een tijdige levering te garanderen. Indien we de goederen niet op tijd kunnen leveren, vergoeden we u tot 5% van het bedrag. Om u te helpen onze producten op een doeltreffende manier te gebruiken, bieden we uitgebreide instructievideo’s. Daarnaast bieden we op locatie technische training die specifiek is afgestemd op uw behoeften, zodat u bekwaam en probleemloos met onze producten kunt werken. Kies voor LSJ als u op zoek bent naar kwalitatief hoogwaardige, betrouwbare producten en uitstekende klantenservice. Sinds 2013 ontwikkelt, levert en verkoopt LSJ hoogwaardige zoek- en reddingsapparatuur en handbediende infraroodcamera’s. LSJ heeft certificaten ontvangen voor ISO9001, CE en ROHS. Daarnaast bezit het bedrijf meer dan 30 octrooien. Als toonaangevend bedrijf kunnen wij zwaar investeren in onze afdeling onderzoek en ontwerp. In 2024 nam LSJ deel aan vier grote beurzen: INTERSEC in Dubai, Securika 2024 en de 18e Defence Services Asia (DSA) en de 3e National Security Asia (NATSEC) in Maleisië, en NFPA in de Verenigde Staten. In 2025 staat gepland dat wij deelnemen aan INTERSEC, die in januari plaatsvindt in Dubai, van 14 tot en met 16. Op onze stand worden onder andere onze thermische brandbestrijdingscamera’s, audio- en videobewakingsapparatuur, gasdetectieapparatuur, 3D-radar en andere producten gepresenteerd. Wij nodigen u van harte uit om onze stand te bezoeken. LSJ heeft meer dan 11 jaar ervaring in de productie van [producten]. Het bedrijf is gespecialiseerd in het ontwerpen en bouwen van nieuwe producten op basis van de gebruiksscenario’s van klanten. Daarnaast wordt voortdurend gewerkt aan het verbeteren van functionaliteiten en het verlagen van productkosten. LSJ heeft ook uitgebreide ervaring op het gebied van stedelijke redding en zoekacties. Zo was de levensdetectieradar van LSJ bijvoorbeeld een cruciaal element bij de reddingsinspanningen van het Chinese Blue Sky Rescue Team tijdens de aardbeving in Turkije in 2023. Kies voor LSJ als u op zoek bent naar hoogwaardige, betrouwbare oplossingen die specifiek op uw behoeften zijn afgestemd. Copyright © Beijing LSJ Technology Development Co., Ltd. Alle rechten voorbehouden
-
Privacybeleid
handheld ir camera
Hoe een handheld IR-camera verborgen details onthult

De veelzijdigheid van een handheld IR-camera

Creativiteit vrijlaten met een handheld IR-camera

De wereld op een geheel nieuwe manier zien met een handheld IR-camera
Why choose LSJ Technology handheld ir camera?
Een volledige keten voor het leveren van uitrusting voor stadsonderzoek en -redding
Waarom kan LSJ uw primaire fabrikant en leverancier zijn?
Kwaliteit en punctuele levering waarborgen: de toewijding van LSJ aan klanttevredenheid
Innovatieve hoogwaardige zoek- en reddingsapparatuur fabrikant
Gerelateerde productcategorieën
Niet vinden wat u zoekt?
Vraag nu een offerte aan
Neem contact op met onze consultants voor beschikbare productenNEEM CONTACT OP