giúp bảo vệ chúng ta khỏi những vật có thể phát nổ. Công nghệ i...">
,需要通过父级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);
}
});
})();
Máy dò nổ là kính ngắm súng tầm nhìn ban đêm những công cụ giúp bảo vệ chúng ta khỏi những thứ có thể phát nổ. Công nghệ là nhà sản xuất của một số thiết bị dò chất nổ tốt nhất. Công ty sử dụng camera hình ảnh nhiệt dành cho Android đảm bảo rằng các máy dò chất nổ của họ cực kỳ hiệu quả. Những máy này có thể phát hiện một loạt các loại chất nổ, từ chất lỏng đến bột, một cách nhanh chóng và chính xác. Khả năng kính nhìn đêm cho súng rất quan trọng đối với an ninh của các địa điểm như sân bay, nhà ga tàu hỏa và các địa điểm công cộng khác. Chúng kiểm tra hành lý và tài sản của người dân, giúp ngăn chặn những điều xấu xảy ra. Máy dò chất nổ hoạt động như những siêu anh hùng âm thầm bảo vệ chúng ta. Nhờ có kính ngắm súng tầm nhìn ban đêm những chiếc máy này, các đội an ninh có thể nhanh chóng truy đuổi và loại bỏ mọi nguy hiểm trước khi nó trở thành vấn đề lớn. Điều này là nhờ việc triển khai các thiết bị phát hiện chất nổ đã làm tăng đáng kể hệ thống an ninh trên toàn cầu. Chúng tôi tại LSJ nhận thức rõ tầm quan trọng của việc cung cấp cho khách hàng những sản phẩm chất lượng cũng như dịch vụ xuất sắc. Chúng tôi cung cấp bảo hành cho một hoặc nhiều thiết bị phát hiện vật nổ để thể hiện sự tự tin vào độ bền và hiệu suất lâu dài của sản phẩm. Đầu tư lớn vào nghiên cứu và phát triển đảm bảo rằng bạn nhận được các sản phẩm tuân thủ theo tiêu chuẩn cao nhất. Là công ty sản xuất, chúng tôi tuân thủ nghiêm ngặt các quy trình kiểm soát chất lượng từ nguyên liệu thô đến sản xuất cuối cùng. Chúng tôi cung cấp một phạm vi rộng các sản phẩm có thể đáp ứng nhu cầu của tất cả người dùng. Chúng tôi cũng duy trì kho dự trữ toàn diện về linh kiện và nguyên liệu thô để đảm bảo giao hàng kịp thời cho mỗi đơn hàng. Nếu chúng tôi không hoàn thành việc giao hàng đúng hạn, chúng tôi cam kết hoàn lại 2-5 phần trăm giá trị đơn hàng cho khách hàng. Để giúp bạn sử dụng sản phẩm của chúng tôi một cách hiệu quả, chúng tôi cung cấp các video hướng dẫn toàn diện. Chúng tôi cũng có thể tổ chức các lớp học kỹ thuật tại chỗ, tùy chỉnh theo nhu cầu cụ thể của bạn, để đảm bảo bạn có thể sử dụng sản phẩm của chúng tôi với sự tự tin và dễ dàng. Chọn LSJ cho các sản phẩm chất lượng cao, đáng tin cậy và dịch vụ khách hàng xuất sắc. Tại LSJ, chúng tôi là chuyên gia trong việc sản xuất thiết bị cứu hộ đô thị chất lượng cao được thiết kế để đáp ứng các tiêu chuẩn quốc tế cao nhất. Dịch vụ Trước Khi Bán Hàng: Chúng tôi sẵn sàng hỗ trợ bạn ngay từ đầu. Chúng tôi cung cấp các tư vấn toàn diện để có thể hiểu rõ nhu cầu của bạn và cung cấp giải pháp phù hợp. Chúng tôi cũng cung cấp các buổi trình diễn sản phẩm cùng với thông số kỹ thuật chi tiết để bạn có tất cả thông tin cần thiết cho việc ra quyết định sáng suốt. Dịch vụ Trong Khi Bán Hàng: Trong quá trình bán hàng, chúng tôi đảm bảo một trải nghiệm phát hiện vật nổ hiệu quả. Chúng tôi cam kết rằng sản phẩm của bạn sẽ đến đúng hẹn và trong tình trạng hoàn hảo nhờ hệ thống đặt hàng tự động và quy trình kiểm soát chất lượng nghiêm ngặt. Chúng tôi cũng hỗ trợ giao hàng tận nơi. Dịch vụ Sau Khi Bán Hàng: Sau khi bạn nhận được hàng, mối quan hệ hợp tác của chúng tôi không dừng lại ở đó. Các dịch vụ sau bán hàng rộng rãi của chúng tôi bao gồm hỗ trợ lắp đặt, đào tạo người dùng và bảo trì. Bộ phận chăm sóc khách hàng của chúng tôi luôn sẵn sàng giải quyết bất kỳ câu hỏi hoặc thắc mắc nào của bạn, nhằm đảm bảo sự hài lòng tối đa. Khi bạn mua thiết bị từ LSJ, chúng tôi sẽ cung cấp bảo hành ba năm và bạn sẽ nhận được các dịch vụ hậu mãi cụ thể từ chúng tôi. Lựa chọn LSJ là lựa chọn niềm tin, chất lượng và sự hỗ trợ vượt trội. Chúng tôi mong muốn trở thành đối tác của bạn trong lĩnh vực cứu hộ đô thị cũng như phòng cháy chữa cháy. Từ năm 2013, LSJ đã phát triển sản xuất, chế tạo và cung cấp thiết bị tìm kiếm cứu nạn và phòng cháy chữa cháy hiệu suất cao. LSJ đã được trao chứng nhận ISO9001, CE và các thiết bị phát hiện chất nổ. Ngoài ra, công ty còn sở hữu hơn 30 bằng sáng chế. Là một doanh nghiệp hàng đầu, chúng tôi có khả năng đầu tư mạnh mẽ vào bộ phận thiết kế và nghiên cứu. LSJ đã tham gia bốn sự kiện lớn vào năm 2024: INTERSEC, Securika, Triển lãm Dịch vụ Quốc phòng châu Á lần thứ 18 và Hội nghị An ninh Quốc gia châu Á lần thứ 3 tại Malaysia và NFPA tại Hoa Kỳ. Chúng tôi cũng đã đăng ký tham gia INTERSEC tại Dubai từ ngày 14-16 tháng 1 năm 2025. Chúng tôi sẽ trưng bày máy dò radar sinh tồn, radar 3D có thể nhìn xuyên tường, máy dò khí, thiết bị nghe nhìn âm thanh và video, cũng như thiết bị giám sát độ ổn định và máy ảnh nhiệt để chữa cháy. Chúng tôi mời bạn đến gian hàng của chúng tôi. LSJ có hơn 11 năm kinh nghiệm trong lĩnh vực sản xuất. Họ chuyên về thiết kế và xây dựng các sản phẩm đổi mới dựa trên kịch bản sử dụng của khách hàng. Họ cũng tiếp tục cải thiện tính năng và giảm chi phí cho các sản phẩm. LSJ còn có nhiều kinh nghiệm trong lĩnh vực tìm kiếm cứu nạn đô thị. Ví dụ, trong trận động đất ở Thổ Nhĩ Kỳ năm 2023, máy dò sinh tồn radio của LSJ là yếu tố then chốt trong nỗ lực cứu hộ của Đội Cứu Hộ Xanh Trời Trung Quốc. Hãy chọn LSJ cho các giải pháp tiên tiến, đáng tin cậy được thiết kế riêng theo nhu cầu của bạn. Chúng tôi cung cấp hỗ trợ cho các bộ phận Phòng cháy chữa cháy và Cứu hộ cứu nạn cũng như các dịch vụ An toàn Công cộng và đội tìm kiếm cứu nạn đô thị. LSJ cung cấp thiết bị đổi mới cho các thiết bị phát hiện chất nổ, thực hiện công tác tìm kiếm cứu nạn và làm việc trong các khu vực nguy hiểm ở nhiều ngành công nghiệp. Máy ảnh Nhiệt dùng trong chữa cháy: Chúng tôi đã nghiên cứu và phát triển hai loại máy ảnh nhiệt. Chúng có ba tùy chọn độ phân giải: 256x192, 384x288 và 640x512. Những máy ảnh này có thể đo nhiệt độ lên tới 2000 độ Celsius. Thiết bị Tìm kiếm và Cứu nạn: Chúng tôi cung cấp một loạt sản phẩm bao gồm màn hình ổn định, máy dò khí và hệ thống giám sát chuyển động. Máy ảnh Nhiệt Công nghiệp: Ngoài máy ảnh nhiệt dành cho chữa cháy, LSJ còn cung cấp máy ảnh nhiệt cầm tay để phát hiện rò rỉ nước và kiểm tra tòa nhà, cũng như sửa chữa điện tử, mất nhiệt sưởi dưới sàn và kiểm tra hệ thống HVAC. Kính Nhìn Đêm và Kính Quang Học Nhiệt rất phù hợp để nhìn ban đêm và được ưa chuộng trong giới thợ săn. Chúng có thể gắn trên súng. LSJ cam kết cung cấp thiết bị quét nhiệt và cứu hộ chất lượng cao để đáp ứng nhu cầu của nhiều ngành công nghiệp, tăng cường an toàn và hiệu quả. LSJ cung cấp các giải pháp an toàn và tiên tiến nhất. Bạn có thể tin tưởng LSJ là đối tác chính của bạn trong lĩnh vực tìm kiếm cứu nạn đô thị. Bản quyền © Công ty Phát triển Công nghệ Beijing LSJ. Tất cả các quyền được bảo lưu
-
Chính sách bảo mật
Thiết bị phát hiện vật nổ
Công nghệ đằng sau các thiết bị phát hiện vật nổ
Tăng cường an ninh với các thiết bị phát hiện vật nổ
Cách các thiết bị phát hiện vật nổ giúp chúng ta an toàn
Khám phá tác động của các thiết bị phát hiện vật nổ đối với hệ thống an ninh
Why choose LSJ Technology Thiết bị phát hiện vật nổ?
Đảm bảo Chất lượng và Giao hàng Đúng hẹn: Cam kết của LSJ về Sự Hài lòng của Khách hàng
Tại sao LSJ có thể là nhà sản xuất và cung cấp Primer của bạn?
Nhà sản xuất thiết bị cứu hộ và cứu nạn hiệu suất cao
Chuỗi cung ứng thiết bị cứu hộ và cứu nạn đô thị hoàn chỉnh
Không Tìm Thấy Thứ Bạn Đang Tìm?
Yêu Cầu Báo Giá Ngay
Liên hệ với các chuyên gia tư vấn của chúng tôi để biết thêm sản phẩm có sẵn.Liên hệ với chúng tôi