di qualità premium per la vostra struttura sanitaria?">
,需要通过父级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);
}
});
})();
Hai bisogno di articoli di alta qualità contenitori per rifiuti taglienti per il tuo istituto sanitario o ospedale? Contatta subito XIEHE MEDICAL! Disponiamo di una vasta selezione di contenitori per rifiuti taglienti per soddisfare una vasta gamma di esigenze, per aziende farmaceutiche, cliniche, operatori sanitari e soccorritori. I nostri contenitori ecologici per rifiuti taglienti sono a prova di perdite, garantendo una raccolta sicura e lo smaltimento in modo rispettoso dell'ambiente. Quindi, che abbiate bisogno di piccoli contenitori singoli oppure di bin per interi carichi di camion per applicazioni all'ingrosso, offriamo dimensioni a prezzi estremamente competitivi. Date un'occhiata ai nostri modelli all'avanguardia contenitore per oggetti punzocutanti con funzioni semplici da utilizzare, pensati per soddisfare tutte le vostre esigenze. Deve provenire da XIEHE MEDICAL In XIEHE MEDICAL, comprendiamo l'importanza dello smaltimento dei rifiuti negli ospedali e nei centri di trattamento medico. È per questo che produciamo prodotti premium contenitori per rifiuti taglienti che rispondono agli elevati standard del settore medico. I nostri contenitori sono robusti, possono essere utilizzati senza l'ausilio di un carrello portabenne ed offrono una soluzione affidabile per lo smaltimento dei rifiuti taglienti. Progettati per migliorare la gestione dei rifiuti, proteggere pazienti e personale e ridurre l'impatto sull'ambiente. I distributori farmaceutici e le strutture sanitarie necessitano di un metodo sicuro e affidabile per rispettare le normative sullo smaltimento rifiuti taglienti e proteggere i propri clienti e dipendenti. XIEHE MEDICAL offre anche una vasta gamma di contenitori per rifiuti taglienti per queste industrie per soddisfare requisiti specifici. Che tu abbia bisogno di contenitori piccoli e portatili per la clinica o la farmacia, oppure di contenitori ad alta capacità per una fabbrica farmaceutica, abbiamo i contenitori adatti alle tue esigenze. Fai affidamento su XIEHE MEDICAL per soluzioni sicure ed efficienti di smaltimento dei rifiuti taglienti progettate attorno alle tue esigenze specifiche. Per gli acquirenti attenti all'ambiente, XIEHE MEDICAL offre prodotti ecologici contenitore per oggetti punzoccosi con caratteristica antigoccia. I nostri contenitori sono realizzati pensando al pianeta, utilizzando materiali riciclati e rispettosi dell'ambiente. La tua soluzione sicura contenitore per oggetti punzoccosi soluzione: con guarnizioni antigoccia per prevenire fuoriuscite e chiusure ermetiche sicure, i nostri contenitori per rifiuti taglienti XIEHE MEDICAL sono progettati per contenere in modo sicuro i rifiuti taglienti pericolosi. Scegli i nostri contenitori per rifiuti taglienti ecologici contenitori per rifiuti taglienti per un approccio ecologico allo smaltimento dei rifiuti taglienti che riflette i tuoi standard ambientali. Stai cercando di acquistare contenitori per rifiuti taglienti all'ingrosso? XIEHE MEDICAL ti copre! Economici e convenienti in quantità contenitori per rifiuti taglienti Cerchi prodotti in grandi quantità contenitori per rifiuti taglienti a prezzi ridotti? Progetto. Che tu abbia bisogno di centinaia o migliaia di contenitori per rifiuti taglienti , possiamo offrirti un programma di prezzi competitivi adatto al tuo budget e alle tue esigenze di approvvigionamento. Fidati di Value Pack OHIEHE MEDICAL per i tuoi acquisti all'ingrosso contenitori per rifiuti taglienti , e risparmia sulla qualità! Durevoli, funzionali contenitori per rifiuti taglienti che soddisfano o superano gli standard del settore per l'assistenza sanitaria… Contenitore da banco IncrementalLite per rifiuti taglienti Innovativo smaltimento dei punteggi soluzioni per la sicurezza dei pazienti e degli operatori sanitari, prevenzione delle punture da ago e conformità alle pratiche sicure per lo smaltimento dei rifiuti taglienti. Xiehe Medical Apparatus Instruments si dedica al marketing e alle vendite globali. Negli ultimi 10 anni, grazie all’impegno dei nostri partner, contiamo oggi oltre 30 distributori in tutto il mondo e i nostri prodotti sono distribuiti in più di 120 paesi. Ci concentriamo sulla raccolta di contenitori per aghi e instauriamo partnership durature con distributori e integratori, per progettare e costruire insieme il futuro. Xiehe Medical Apparatus Instruments è un produttore di attrezzature mediche di alta qualità. Fornisce inoltre servizi speciali. Implementa rigorosamente il sistema di controllo della qualità ISO13485, e tutti i prodotti sono certificati da TUV, CE, FDA e molti altri. Con una squadra di dipendenti dedicati che riescono a soddisfare rapidamente le esigenze dei clienti, garantendo che i prodotti siano affidabili e sicuri e che i servizi siano eccellenti. Che tu abbia bisogno di una barella per ambulanze, di mobili pieghevoli per ospedali o di attrezzature funerarie, Xiehe Medical Equipment ha la soluzione. Hehe Medical Equipment dà la massima priorità alla soddisfazione del cliente e si impegna a soddisfare le esigenze dei propri clienti con qualità e affidabilità. Grazie alla passione del personale e alle tecnologie collaborative impiegate, siamo in grado di offrire ai clienti un servizio personalizzato e affidabile. Il nostro obiettivo è instaurare una partnership continua, stabile e collaborativa con i nostri clienti, fornendo loro prodotti e servizi di altissima qualità. Xiehe Medical Apparatus & Instruments è continuamente impegnata in attività creative di ricerca e sviluppo, dedicandosi alla produzione di prodotti dotati di punti di forza competitivi. I brevetti e le proprietà intellettuali tutelate riguardano lettighe, contenitori per aghi e altri dispositivi taglienti, articoli per il primo soccorso, arredi per ospedali e prodotti funerari. I prodotti sono progettati per rispecchiare le tendenze attuali e soddisfare le esigenze dei nostri clienti. Sono apprezzati sia dai clienti nazionali che da quelli internazionali.collezione di cassonetti per oggetti punzocutanti
Una vasta collezione di contenitori per rifiuti taglienti per aziende farmaceutiche e cliniche alla ricerca di soluzioni sicure per lo smaltimento

Contenitori per rifiuti taglienti ecologici con design anti-perdite, ideali per acquirenti attenti all'ambiente

Contenitori per rifiuti taglienti economici in quantità elevate per acquisti all'ingrosso

Contenitori per rifiuti taglienti innovativi con funzionalità intuitive per professionisti sanitari e soccorritori
Why choose XIEHE MEDICAL
collezione di cassonetti per oggetti punzocutanti?
Rete di marketing globale e partner stabili
Prodotti di alta qualità e servizi specializzati
Servizio post-vendita rapido e supporto tecnico centrati sul cliente
Ricerca e sviluppo innovativi e punti di forza del prodotto
Categorie di prodotti correlati
Non trovi quello che stai cercando?
Richiedi un preventivo ora
Contatta i nostri consulenti per ulteriori prodotti disponibili.Contattaci