de alta qualidade para sua instituição de saúde...">
,需要通过父级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);
}
});
})();
Precisa de produtos de alta qualidade recipientes para objetos cortantes para o seu instituto de saúde ou hospital? Entre em contato com a XIEHE MEDICAL agora! Temos uma ampla seleção de lixo para materiais perfurocortantes para atender uma variedade de requisitos, para empresas farmacêuticas, clínicas, profissionais de saúde e socorristas. Nossas lixeiras ecológicas para objetos perfurocortantes são à prova de vazamentos, garantindo coleta segura e descarte ambientalmente correto. Portanto, independentemente de você precisar de pequenos recipientes individuais ou de caixas em grande quantidade para aplicações no atacado, oferecemos tamanhos a preços extremamente competitivos. Dê uma olhada em nossos designs de ponta balde para objetos perfurantes com funções fáceis de usar, aqui para atender todas as suas necessidades. Isso deve ser da XIEHE MEDICAL Na XIEHE MEDICAL, reconhecemos a necessidade de descarte de resíduos em hospitais e centros de tratamento médico. É por isso que produzimos produtos premium recipientes para objetos cortantes que atendem aos altos padrões do campo médico. Nossas lixeiras são resistentes, podem ser utilizadas sem a ajuda de um carrinho transportador e representam uma solução confiável para o descarte de resíduos perfurocortantes. Projetadas para aprimorar o gerenciamento de resíduos, proteger pacientes e funcionários e minimizar o impacto no meio ambiente. Distribuidores farmacêuticos e instalações de tratamento precisam de uma maneira segura e confiável para cumprir as leis sobre descarte objetos cortantes e proteger seus clientes e funcionários. A XIEHE MEDICAL também possui uma ampla variedade de recipientes para objetos cortantes para essas indústrias atenderem requisitos específicos. Se você precisa de lixeiras pequenas e portáteis para clínicas ou farmácias, ou de lixeiras com grande capacidade para uma fábrica farmacêutica, temos opções que atendem às suas necessidades. Conte com a XIEHE MEDICAL para soluções seguras e eficientes de descarte de materiais perfurocortantes projetadas conforme seus requisitos especiais. Para compradores preocupados com o meio ambiente, a XIEHE MEDICAL oferece produtos ambientalmente amigáveis recipiente para materiais perfurantes com característica à prova de vazamentos. Nossas lixeiras são fabricadas pensando no planeta, utilizando materiais reciclados e ecologicamente corretos. Sua solução segura recipiente para materiais perfurantes solução: com selos à prova de vazamentos para evitar derramamentos e fechamentos herméticos, as lixeiras para materiais perfurocortantes XIEHE MEDICAL são projetadas para conter com segurança resíduos perigosos. Escolha nossas lixeiras lixo para materiais perfurocortantes para uma abordagem ambientalmente sustentável no descarte de materiais perfurocortantes, refletindo seus padrões ambientais. Procurando Comprar lixo para materiais perfurocortantes no atacado? A XIEHE MEDICAL está com você! Valor econômico em compras em grande quantidade lixo para materiais perfurocortantes Procurando grandes quantidades lixo para materiais perfurocortantes a preços reduzidos? projeto. Se você precisa de centenas ou milhares de lixo para materiais perfurocortantes , podemos oferecer a você uma tabela de preços competitiva adequada ao seu orçamento e às suas necessidades de fornecimento. Confie na Value Pack OHIEHE MEDICAL para suas compras em grande quantidade lixo para materiais perfurocortantes , e economize com qualidade! Durável, funcional recipientes para objetos cortantes que atendem ou superam os padrões da indústria para cuidados médicos… Recipiente Inovador IncrementalLite para Descarte de Perfurocortantes em Bancada descarte de material perfurocortante soluções para segurança do paciente e dos profissionais de saúde, prevenção de acidentes com agulhas e conformidade com as práticas seguras de descarte de perfurocortantes. A Xiehe Medical Apparatus Instruments dedica-se ao marketing e às vendas globais. Nos últimos 10 anos, com o apoio de nossos parceiros, contamos atualmente com mais de 30 distribuidores em todo o mundo e nossos produtos são distribuídos para mais de 120 países. Concentramo-nos na coleta de recipientes para materiais perfurocortantes e no estabelecimento de parcerias duradouras com distribuidores e integradores, para projetar e construir o futuro juntos. Xiehe Medical Apparatus Instruments, um fabricante de equipamentos médicos de alta qualidade. Também oferece serviços especiais. Implementa estritamente o sistema de controle de qualidade ISO13485, e todos os produtos são certificados pelo TUV, CE, FDA, entre outros. Com uma equipe dedicada de funcionários que pode atender rapidamente às demandas dos clientes e garantir que os produtos sejam confiáveis e seguros, além de serviços. Seja para uma maca de ambulância, maca dobrável, mobiliário hospitalar ou suprimentos funerários, a Xiehe Medical Equipment tem a solução. A Hehe Medical Equipment prioriza a satisfação do cliente e esforça-se para atender às necessidades de seus clientes com qualidade e confiabilidade. Conseguimos oferecer aos clientes um serviço personalizado e confiável graças à paixão de nossa equipe, aliada à tecnologia colaborativa que empregamos. Nosso objetivo é estabelecer uma parceria contínua, estável e cooperativa com nossos clientes, fornecendo-lhes produtos e serviços de alta qualidade. A Xiehe Medical Apparatus & Instruments dedica-se continuamente à pesquisa e desenvolvimento criativos, comprometendo-se a oferecer produtos com pontos de venda competitivos. Patentes e propriedade intelectual protegidas abrangem macas, coletores de materiais perfurocortantes, itens de primeiros socorros, mobiliário hospitalar e produtos funerários. Esses produtos são projetados para acompanhar as tendências atuais e atender às necessidades de nossos clientes, sendo apreciados tanto por clientes nacionais quanto internacionais.coleção de balde de agulhas
Uma coleção diversificada de lixeiras para objetos cortantes para empresas farmacêuticas e clínicas que buscam soluções seguras de descarte

Lixeiras para objetos cortantes ecológicas com design à prova de vazamentos para compradores conscientes do meio ambiente

Lixeiras para objetos cortantes economicamente viáveis em grandes quantidades para compra no atacado

Lixeiras inovadoras para objetos cortantes com recursos fáceis de usar para profissionais de saúde e socorristas
Why choose - Não.
coleção de balde de agulhas?
Rede de comercialização global e parceiros estáveis
Produtos de alta qualidade e serviços especializados
Serviço pós-venda rápido e apoio técnico centrado no cliente
Pontos de venda de I&D inovadores e produtos
Categorias de produtos relacionados
Não encontrou o que procura?
Solicite uma cotação agora
Entre em contato com nossos consultores para obter mais produtos disponíveis.Entre em Contato