...">
,需要通过父级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);
}
});
})();
Manevruoti tamsuose su mažu bijos dališku yra labai aišku, bet jums reikia medžioti, o tokiems atvejams yra medžiotojo šviesos. A geriausias naktinio matavimo laukas kiaulių medžioklei yra unikalus prietaisas, kuris galės padėti žmonėms matyti tamsioje. Jūs lengvai medžiosite naudoję naktinę matomumo teleskopą, rast animals, kuriuos anksčiau negalėjote pamatyti, ir būsite saugūs, dirgdami naktimis. Taigi, tęskite medžioti paskui sau nusileido. Nvs yra ginklo ekranas, kurį galite prisijungti prie savo medžiotojo strypų. Taip jis padeda kovoti su tamsa. Teleskopas atlieka tam tikrą magiją, stiprinant mažus šviesos pėdsakus, kad tamsuose vietose galėtumėte matyti daugiau. Ši technologija gali atpažinti gyvūlius, tokiais kaip elnias, kiaulius ir kitus naktiniais būtybėmis. Ją galima naudoti ne tik medžioklei, bet ir stebėti daiktus ar kitas prabangias veiklas naktimis. Naudojant naktinį matavimo teleskopą medžioti tokius gyvūnus gali būti įspūdinga ir smagia. Tačiau prieš einant į tamsą, yra kai kurios dalykai, apie kuriuos reikia žinoti. Nekad neremkite kontrolę paversti ginklu, o kai šaudote, visada užtikrinkite, kad tai būtų saugu bet kuriam asmeniui. Jūsų aplinka yra tai, ką turite geriausiai apsaugoti, ir tai reikia stipriai pabrėžti. Atsižvelkite, kad nekenktotumėte kitų žmonių ar gyvūnų. Ir dėmesys padeda užtikrinti, kad visi praleistų patogiai laiką ir saugiai grįžtų namo. Geriausi nakties matavimo medžiotojo teleskopai yra sukurti tik stebėjimo tikslais. Jie taip pat yra labai kompaktiniai. Jie yra labai maži ir lengvi, todėl jie yra pernešami, o naudoti juos bus paprasta. Daugelis naktinių matavimo teleskopų taip pat turi įstatytus atstumo matuoklius. Tai svarbios ypatybės, nes jos leidžia medžiotojui sužinoti, kiek toli jo/jos tikslas yra nuo jų, ir gali padėti reguliuoti šaudymą. Tai leis jums lengviau medžioti. Naudojant naktinio matymo medžioklių teleskopus, pateikiami daugumai pranašumai. Didžiausias iš jų yra naktinis matymas. Tai leidžia visoms šalims vykdyti medžioklį naktį saugesniu ir patogesniu būdu. Be to, tai padeda stebėtojams rasti gyvūnus, kuriuos jie galėtų pamiršti, todėl tapome tiksliau tikėdami į giminingą. Naktinio matymo teleskopas leidžia sėkmingai vykdyti medžioklius ir tyrinėti naktinę veiklą. Galima sprendimo prieštaringumas: Naktinio matymo medžioklių teleskopai taip pat gali pagerinti medžiotojų matymą per dieną. Daugelis turi reguliuojamus lęšius. Su lęšiu galite matyti toliau ir geriau nei su akimis. nors tai gali atrodyti truputį skausminga, tai ypač naudinga medžiotojams, norintiems matyti gyvūnus ilgesniu atstumu. Taigi, čia ir pasirodo teleskopas; jis padeda laikyti savo dienos medžioklių kelionės taip pat linksmas kaip ir nakties. naktinio matymo medžioklinis žiūronas nuo LSJ. Suprantame, kiek svarbu siūlyti savo klientams aukščiausios kokybės produktus ir puikią aptarnavimo paslaugą. Todėl siūlome vienerių ar penkerių metų garantijas, kurios atspindi mūsų pasitikėjimą savo produktų ilgaamžiškumu ir našumu. Mes įsipareigojome plėtoti tyrimus ir plėtrą, kad užtikrintume savo produktų atitiktį aukščiausiems standartams. Kaip gamintojai mes taikome griežtą kokybės kontrolę nuo žaliavų priėmimo iki gamybos proceso pabaigos. Ar jūs esate privatusis pirkėjas, platintojas, konkursų dalyvis ar net vyriausybės institucija – turime įvairių produktų, kurie atitinka jūsų reikalavimus. Taip pat turime didelę žaliavų ir kitų komponentų atsargą, kad užtikrintume kiekvienos užsakymo pristatymą laiku. Jei nepristatysime užsakymo laiku, grąžinsime klientams nuo 2 % iki 5 % užsakymo vertės. Kad padėtume jums efektyviai naudoti mūsų produktus ir išnaudotumėte juos maksimaliai, siūlome išsamias mokomąsias vaizdo įrašų pamokas. Be to, galime organizuoti mūsų techninio personalo vietos mokymus, pritaikytus jūsų poreikiams, kad užtikrintume, jog jūs galėtumėte naudoti mūsų produktus su pasitikėjimu ir lengvai. Pasirinkite LSJ ir gaukite aukščiausios kokybės, patikimus produktus bei nepaprastą klientų aptarnavimą. LSJ yra rinkos lyderis aukščiausios kokybės naktinio matymo medžioklinių žiūronų gamyboje, atitinkančių tarptautinius standartus.
Išankstinės pardavimo paslaugos:
Mes esame čia, kad jums padėtume nuo pat pradžių. Teikiame išsamias konsultacijas, padedančias suprasti jūsų konkrečius poreikius, ir siūlome pritaikytas sprendimo galimybes. Siekdami padėti jums priimti informuotą sprendimą, pateikiame technines specifikacijas ir produktų demonstracijas.
Pardavimo paslaugos:
Užtikriname, kad visą pardavimo procesą būtų sklandus ir efektyvus. Mūsų efektyvūs naktinio matymo medžiokliniai žiūronai kartu su griežta kokybės kontrolės sistema užtikrina, kad produktai būtų pristatyti laiku ir puikios kokybės. Taip pat teikiame „durų iki durų“ pristatymo paslaugą.
Po pardavimo paslaugos:
Mūsų ryšys su jumis nebaigiasi tik gavus mūsų produktus. Teikiame įvairias po pardavimo paslaugas, įskaitant montavimo instrukcijas, vartotojų apmokymą bei priežiūros paslaugas. Turime specialiai skirtą klientų aptarnavimo komandą, kuri visada yra pasirengusi padėti. Ji padės išspręsti bet kokius klausimus ar problemas ir užtikrins jūsų patenkinamumą. Įsigijus įrangą iš LSJ, suteikiame tris metų garantiją ir galėsite pasinaudoti mūsų specialiomis po pardavimo paslaugomis.
Pasirinkdami LSJ, pasirenkate kokybę, patikimumą ir nepasiekiamą palaikymą. Laukiame galimybės tapti jūsų partneriais miestų paieškos ir gelbėjimo bei gaisrininkų veikloje. Mes aptarnaujame gaisrinės apsaugos ir gelbėjimo tarnybas, visuomenės saugumo paslaugas, miestų paieškos ir gelbėjimo komandas bei kitas armijas. LSJ teikia naujausios klasės įrangą gaisrams gesinti, atlikti paiešką ir gelbėjimą bei dirbti pavojingose vietose įvairiose pramonės šakose. Gaisrinės šiluminės kameros. Sukūrėme ir ištirtome du šiluminių kamerų tipus, turinčius tris skirtingus skiriamąjį gebėjimą. Jos gali stebėti temperatūras iki 2000 °C. Paieškos ir gelbėjimo įranga: Mūsų asortimentas apima radarinius gyvybės detektorius, naktinio matymo medžioklinius žiūronus per sienas, stabilumo monitorius, judėjimo stebėjimo sistemas, taip pat dujų detektorius. Pramoninės šiluminės kameros: LSJ gamina šilumines kameras, kurios naudojamos ne tik gaisrinėje veikloje, bet taip pat pastatų tyrimams, elektronikos remontui, vandens nuotėkų aptikimui bei šildymo, ventiliacijos ir oro kondicionavimo (HVAC) sistemų tikrinimui. Šiluminiai žiūronai ir naktinio matymo žiūronai: Mūsų naktinio matymo žiūronai puikiai tinka matomumui naktį ir yra populiarūs tarp medžiotojų. Juos lengva pritvirtinti prie šautuvų. LSJ siūlo aukštos kokybės šilumines gelbėjimo ir vaizdo įrangą, kuri atitinka įvairių pramonės šakų poreikius ir padeda padidinti efektyvumą bei saugą. LSJ – tai patikimiausios ir inovatyviausios sprendimų tiekėjas. Pasitikėkite LSJ kaip savo pagrindiniu partneriu miestų paieškos ir gelbėjimo operacijose. naktinio matymo medžioklinis žiūronas 2013 m., LSJ kūria, gamina ir tiekia didelės našumo paieškos ir gelbėjimo įrangą bei gaisrininkų įrangą. LSJ sertifikuota pagal ISO9001, CE, ROHS ir MSDS standartus ir jai suteikta daugiau nei 30 patentų. Kaip pramonės lyderis, mes galime reikšmingai investuoti į savo tyrimų ir kūrimo skyrių. 2024 m. LSJ dalyvavo keturiuose pagrindiniuose renginiuose: INTERSEC Dubaje, Securika 2024, 18-ajame Gynybos paslaugų Azijoje (DSA) ir 3-ajame Nacionalinės saugos Azijoje (NATSEC) renginyje Malaizijoje bei NFPA JAV. Taip pat turėsime stendą INTERSEC Dubaje nuo 2025 m. sausio 14 iki 16 dienos. Parodysime savo radarinį gyvybės aptikimo prietaisą, 3D radaro sistemą, kuri gali prasiskverbti per sienas, dujų detektorių, garso ir vaizdo klausymosi įrenginius, stabilumo stebėjimo įrangą bei šiluminės kaitos kameras gaisrams gesinti. Kviečiame aplankyti mūsų stendą. Turėdami dešimtmetę gamybos patirtį, LSJ specializuojasi perkuriant ir gaminant naujus produktus remiantis klientų naudojimo scenarijais, nuolat tobulindami funkcijas ir mažindami sąnaudas. LSJ taip pat turi išplėstą žinias apie miestų gelbėjimą ir paiešką. Pavyzdžiui, 2023 m. Turkijos žemės drebėjimo metu LSJ radijo gyvybės detektorius žymiai prisidėjo prie Kinijos „Mėlynojo dangaus gelbėjimo komandos“ gelbėjimo veiksmų. Pasirinkite LSJ, kad pasiektumėte naujausią technologiją, sukurtą atitikti jūsų specifinius reikalavimus. Copyright © Beijing LSJ Technology Development Co., Ltd. Visos teisės saugomos
-
Privatumo politika
naktinio matymo medžioklės scopas
Medžioklė su naktinio matymo scopu

Naktinio matymo medžioklės scopas

Naktinio matymo medžioklės scopų pranašumai

Naktinio matymo medžioklės scopiai geriausiam matavimui
Why choose LSJ Technology naktinio matymo medžioklės scopas?
Įsitikinimas kokybe ir laiku pateikimu: LSJ įsipareigojimas tenkinti klientų poreikius
Kodėl LSJ gali būti jūsų pagrindinis gamintojas ir tiekėjas?
Visiškas miesto paieškos ir gelbėjimo įrangos tiekimo grandinės
Inovacinis aukštos našumos paieškos ir gelbėjimo įrangos gamintojas
Susijusios prekių kategorijos
Nerandate to, ko ieškote?
Prašyti pasiūlymo dabar
Susisiekite su mūsų konsultantais dėl papildomų prekių.Susisiekite