\n\n

,需要通过父级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 || nodeText || ''); if (phoneReg.test(str) && numUseReg.test(str)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { phone: nodeText, }, }, '*'); _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; if (phoneReg.test(fatherText) && numUseReg.test(fatherText)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { phone: nodeText, }, }, '*'); _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)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: 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')) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: content, }, }, '*'); _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)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: 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)) { window.postMessage({ type: 'SHOPS_CONTACT_TRACK', data: { email: 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); } }); })();

Fabbricazione personalizzata di lamiere OEM | Stampaggio, taglio al laser e lavorazione CNC | Deeplink

Tutte le categorie

INFORMATIVA SULLA PRIVACY

Data di aggiornamento: 2025

Periodo di validità: dal 2025 a indeterminato

Nota: Questo accordo è valido in modo permanente

Intendiamo migliorare il servizio per tutti sul nostro sito web, raccogliendo e utilizzando informazioni su di te, i nostri

Questa politica sulla privacy ti aiuterà a comprendere meglio come raccogliamo, utilizziamo e condividiamo le tue informazioni personali. Se cambiamo le nostre pratiche sulla privacy, potremmo aggiornare questa politica sulla privacy. Se ci sono cambiamenti significativi, te lo comunicheremo via email

I nostri principi fondamentali

Analizziamo attentamente quali tipi di informazioni abbiamo bisogno per fornire i nostri servizi e cerchiamo di limitare le informazioni che raccogliamo solo a quelle realmente necessarie. Ogni volta che è possibile, cancelliamo o anonimizziamo queste informazioni quando non ne abbiamo più bisogno. Quando costruiamo e miglioriamo i nostri prodotti, i nostri ingegneri collaborano strettamente con i nostri team di privacy e sicurezza per tenere conto della privacy fin dall'inizio. In tutto questo lavoro, il nostro principio guida è che le tue informazioni ti appartengono, e miriamo a utilizzare le tue informazioni solo a tuo vantaggio.

Se una terza parte richiede le tue informazioni personali, rifiuteremo di condividerle a meno che tu non ci dia il permesso o siamo legalmente obbligati a farlo. Quando siamo legalmente obbligati a condividere le tue informazioni personali, ti avviseremo in anticipo, a meno che non siamo legalmente proibiti di farlo.

Quali informazioni raccogliamo su di te e perché

Raccogliamo informazioni personali quando ti iscrivi al nostro sito web, quando utilizzi la nostra piattaforma o quando ci fornisci informazioni in altro modo. Potremmo anche utilizzare fornitori di servizi terze parti per aiutarci a fornirti altri servizi. In generale, abbiamo bisogno di queste informazioni affinché tu possa utilizzare la nostra piattaforma.

Perché elaboriamo le tue informazioni

Generalmente elaboriamo le tue informazioni quando è necessario per adempiere a un obbligo contrattuale, o quando noi o qualcuno con cui lavoriamo ha bisogno di utilizzare le tue informazioni personali per una ragione legata alla loro attività (ad esempio, per fornirti un servizio), incluso:

Elaboriamo le informazioni personali solo nelle situazioni sopra menzionate, dopo aver valutato i potenziali rischi per la tua privacy, ad esempio fornendo una chiara trasparenza sulle nostre pratiche di privacy, offrendoti il controllo sulle tue informazioni personali quando appropriato, limitando le informazioni che conserviamo, limitando ciò che facciamo con le tue informazioni, a chi inviamo le tue informazioni, quanto a lungo le conserviamo o le misure tecniche che utilizziamo per proteggere le tue informazioni. In generale, conserveremo le tue informazioni per 3 anni.

Potremmo elaborare le tue informazioni personali quando hai fornito il tuo consenso. In particolare, quando non possiamo fare affidamento su un altro fondamento legale per l'elaborazione, quando i tuoi dati sono sorgenti e vengono già forniti con il consenso o quando siamo obbligati per legge a chiedere il tuo consenso nel contesto di alcune delle nostre attività di vendita e marketing. In qualsiasi momento, hai il diritto di ritirare il tuo consenso modificando le tue scelte di comunicazione, optando per non ricevere le nostre comunicazioni o contattandoci.

I tuoi diritti sulle tue informazioni

Crediamo che dovresti poter accedere e controllare le tue informazioni personali indipendentemente da dove vivi. A seconda di come utilizzi il nostro sito web, potresti avere il diritto di richiedere l'accesso, la correzione, la modifica, l'eliminazione, il trasferimento a un altro fornitore di servizi, la limitazione o l'opposizione a determinati utilizzi delle tue informazioni personali (ad esempio, marketing diretto). Non ti addebiteremo ulteriori costi né ti forniremo un livello diverso di servizio se eserciti uno di questi diritti.

Si prega di notare che, se ci invii una richiesta relativa alle tue informazioni personali, dobbiamo assicurarci che sia davvero tu prima di rispondere. A tal fine, potremmo utilizzare un terzo per raccogliere e verificare i documenti di identificazione.

Se non sei soddisfatto della nostra risposta a una richiesta, puoi contattarci per risolvere il problema. Hai anche il diritto di contattare l'autorità locale per la protezione dei dati o la privacy in qualsiasi momento.

Dove inviamo le tue informazioni

Siamo un'azienda cinese con sede a Est di East Outer Ring Road, a Sud di Planned North Outer Ring Road, Zona Economica di Sviluppo West Zone. Per gestire la nostra attività, potremmo trasferire i tuoi dati personali al di fuori del tuo stato, provincia o paese, incluso il trasferimento verso server gestiti dai nostri fornitori di servizi in Cina o a Singapore. Questi dati potrebbero essere soggetti alle leggi dei paesi in cui li trasferiamo. Quando trasferiamo le tue informazioni al di fuori dei confini nazionali, adottiamo misure per proteggerle e cerchiamo di inviarle solo in paesi che dispongono di solide normative sulla protezione dei dati.

Sebbene facciamo tutto il possibile per proteggere le tue informazioni, potremmo a volte essere legalmente obbligati a divulgare le tue informazioni personali (ad esempio, se riceviamo un ordine del tribunale valido).

Quando e perché condividiamo le tue informazioni con altri

Utilizziamo fornitori di servizi per aiutarci a fornirti i nostri servizi. Questi servizi ti saranno esplicitamente forniti in base alla tua conferma o consenso.

Al di fuori di questi fornitori di servizi, condivideremo le vostre informazioni solo se siamo legalmente obbligati a farlo (ad esempio, se riceviamo un ordine del tribunale o un mandato legale vincolante).

Se avete domande su come condividiamo le vostre informazioni personali, dovreste contattarci.

Come proteggiamo le vostre informazioni

Le nostre squadre lavorano incessantemente per proteggere le vostre informazioni e garantire la sicurezza e l'integrità della nostra piattaforma. Inoltre, abbiamo auditor indipendenti che valutano la sicurezza dei nostri sistemi di archiviazione dati e dei sistemi che elaborano informazioni finanziarie. Tuttavia, abbiamo anche acquistato SSL per prevenire il più possibile la fuga di dati dal sito web. Tuttavia, sappiamo tutti che nessun metodo di trasmissione via Internet e nessun metodo di archiviazione elettronica può essere al 100% sicuro. Ciò significa che non possiamo garantire la sicurezza assoluta delle vostre informazioni personali.

Potete trovare ulteriori informazioni sulle nostre misure di sicurezza sul nostro sito web.

Come utilizziamo i "cookie" e altre tecnologie di tracciamento

Utilizziamo cookie e tecnologie di tracciamento simili sul nostro sito web e quando forniamo i nostri servizi. Per maggiori informazioni su come utilizziamo queste tecnologie, compresa una lista di altre aziende che posizionano cookie sui nostri siti, e una spiegazione di come puoi optare per l'esclusione di certi tipi di cookie, consulta la nostra Politica sui Cookie.

Come puoi contattarci

Se desideri chiedere, fare una richiesta relativa a, o lamentarti riguardo al modo in cui elaboriamo le tue informazioni personali, ti preghiamo di contattarci o inviarci un'email all'indirizzo sottostante.

Nome: Cangzhou Deeplink International Supply Chain Co., Ltd.

Indirizzo e-mail: [email protected]