Examination Couch neck collar cervi...">
,需要通过父级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);
}
});
})();
Tangkilikin ang pinakamataas na ginhawa at suporta para sa iyong leeg gamit ang XIEHE MEDICAL Kotse para sa Pagsusuri mga de-kalidad na produkto ng neck collar cervical. Ang aming ergonomikong hugis ay nagpapababa ng pagod at hindi komportable, kaya ito ang perpektong accessory sa opisina. Alamin ang tungkol sa pag-invest sa iyong kalusugan gamit ang aming de-kalidad at murang mga suportang cervical. Nasusuka ka na ba sa sakit at panghihina ng leeg? Tumingin lamang sa serye ng mga produkto ng neck collar cervical, mula sa XIEHE MEDICAL. Ang aming disenyo ay nagbibigay sa iyo ng mahusay na suporta at lunas na kailangan mo upang maisagawa ang iyong araw nang walang abala ng masakit na sakit kaya ikaw ay nakatuon sa mga bagay na kailangan mo. Ipaalam ang paalam sa sakit at kamusta sa ginhawa gamit ang aming mataas na kalidad na produkto. Ergonomic Office chair para sa pang-araw-araw na paggamit: Maaaring i-adjust at ikiling ang ergonomic office chair na ito sa perpektong taas at anggulo na gusto mo, na nag-aalok ng pinakamahusay na ginhawa at suporta para sa iyong likod, leeg, baywang, balakang, at binti. Tunay na nakikita natin ito, dito sa XIEHE MEDICAL, nauunawaan namin. Kaya ang aming neck collar ay ergonomikong idinisenyo para sa komportable at suportadong pakiramdam sa loob ng maraming oras. Maging ikaw ay gumagaling pa mula sa sugat o simpleng hindi na kasing lakas ang katawan mo tulad noong kabataan, idinisenyo ang aming mga produkto upang matulungan kang maramdaman ang pinakamahusay na pagkatao mo. Mag-invest ka sa iyong kalusugan gamit ang isang cervical neck collar na tunay na may lahat ng kailangan mo. Ang tamang pagkaka-align ng leeg ay napakahalaga para sa maayos na pag-upo at upang maiwasan ang paulit-ulit na tensyon sa leeg. Ang mga cervical collar ng XIEHE MEDICAL ay ininhinyero upang mapabuti ang pagkaka-align at posisyon ng leeg upang manatiling malayo ang stress sa iyong mga kalamnan sa leeg. Ang produktong ito ay isang invest na magbubunga ng mas mataas na komport at pagganap sa araw-araw mong gawain. Paalam sa masamang postura at yakapin ang pakiramdam ng kagalingan kapag nasa tamang posisyon ang iyong leeg habang ginagamit ang aming produkto. Ang sakit sa leeg ay maaaring maging malaking hadlang sa paggawa, sa opisina man o habang nagpapahinga sa bahay. INILARAW NG XIEHE MEDICAL ANG MGA PREMIUM NA COLLAR SA LEeg upang mapataas ang produktibidad sa pamamagitan ng pagbawas ng sakit at hayaan kang mag-concentrate sa gawain. Dahil sa aming orihinal na disenyo, mararamdaman mong pinag-aaralan ka nang hindi nakikitunganga parang lola. Sa aming disenyo na Bikini cut, mas komportable ka pang mararamdaman. Ang iyong kalusugan ay dapat palaging nasa nangungunang prayoridad, at narito ang XIEHE MEDICAL upang matiyak na nag-i-invest ka dito. Ang aming matibay at abot-kayang mga produktong suporta para sa leeg ay tumutulong na ilagay muna ang iyong kalusugan nang hindi umaabot sa kalugihan. Huwag na mag-compromise sa murang kopya na nagbibigay lamang ng pansamantalang lunas, piliin na lang ang produkto na tatagal nang buong buhay at magpapabuti sa iyong kalidad ng buhay. Mag-invest sa iyong kalusugan ngayon, at i-click na ang "Idagdag sa Cart"! Mag-order na, 5 Suporta para sa leeg, 100% NA NAKAKASATISFY! Ano pa ang hinihintay mo? Ang Xiehe Medical Apparatus Instruments ay patuloy na nakikilahok sa malikhaing pananaliksik at pag-unlad (R&D) ng neck collar at cervical products upang magbigay ng mga kompetitibong selling point ng produkto. Mayroon itong maraming patent at proteksyon sa intellectual property, halimbawa ang medical stretchers, mga produktong first aid, kasama ang hospital furniture at funeral products. Ang mga produkto ay ginagawa upang tugunan ang mga pangangailangan ng aming mga customer at manatiling updated sa kasalukuyang trend. Sila rin ay lubos na minamahal ng mga domestic at international na customer. Bilang nangungunang tagagawa ng kagamitang panggagamot, ang Xiehe Medical ay nagbibigay ng mga kuwelyo at cervical instrument para sa leeg na may mataas na kalidad kasama ang espesyalisadong serbisyo. Mahigpit na isinasagawa ang ISO13485 quality control system, at lahat ng produkto ay sertipikado ng TUV, CE, FDA, atbp. Ang koponan ay dedikado at mabilis na tumutugon sa mga kailangan ng mga customer upang magbigay ng matatag at maaasahang mga produkto. Hindi mahalaga kung ito ay folding stretcher, hospital furniture, o funeral supplies—ang Xiehe Medical Equipment ay kayang magbigay ng kasiya-siyang solusyon sa mga customer. Ang Hehe Medical Equipment ay binibigyang-priority ang kasiyahan ng mga customer at ipinagpapatuloy ang pagsisikap na tugunan ang kanilang mga pangangailangan nang may kahusayan at katiyakan. Kayang mag-alok ng malapit at mapagkalingang serbisyo sa mga customer dahil sa pagmamahal ng aming mga empleyado at sa kolaboratibong teknolohiyang ginagamit. Ang layunin ng neck collar cervical ay likhain ang isang hindi nababagang, pangmatagalang samahan sa negosyo kasama ang aming mga customer, at bigyan sila ng mga produktong may mataas na kalidad at serbisyo. Ang Xiehe Medical Apparatus Instruments ay nagsisikap na maisakatuparan ang estratehiya nito sa globalisasyon sa pamamagitan ng pagsasapalaganap at benta. Kasama ang suporta ng mga tagapag-suplay sa loob ng higit sa 10 taon, mayroon itong higit sa 30 distributor sa buong mundo. Ang mga produkto nito ay ipinamamahagi sa higit sa 120 bansa. Nakatuon ito sa pagtatayo ng matatag na pakikipagtulungan sa mahabang panahon kasama ang mga neck collar cervical at integrator upang magtugon sa kinabukasan sa pamamagitan ng pakikipagtulungan.neck collar cervical
Dinisenyo nang ergonomiko para sa pinakamataas na ginhawa at suporta

Tuklasin ang mga benepisyo ng tamang pagkakaayos ng leeg gamit ang aming cervical collars

Pataasin ang produktibidad at mabawasan ang discomfort gamit ang aming premium na neck collars

Mag-invest sa inyong kalusugan gamit ang aming matibay at abot-kayang solusyon sa pagsuporta sa leeg.
Why choose XIEHE MEDICAL
neck collar cervical?
Mapanuring R at D at Produkong Benta ng Points
Mataas na kalidad ng mga produkto at espesyal na mga serbisyo
Nakatuon sa Mga Kliyente na Bilis na serbisyo pagkatapos ng benta at suporta sa teknikal
Global na network ng marketing at matatag na mga partner
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan