Cercate un modo per impostare alloggi temporanei in Algeria senza attendere ... ">
,需要通过父级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++) { ;(function (i) { if (nodeChildList[i].nodeType !== 3) return var val = nodeChildList[i].textContent.replace(/\s?:?/g, '') if (!limitRegLength(val)) return if (emailReg.test(val)) { _paq.push(['trackEvent', 'click', 'email', val]) return } })(i) } 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() break } /** 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() break } /** 向上查找父节点 */ 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') // 回调函数 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) } }) })();
Esci dalle soluzioni abitative tradizionali e permetti alla toilette e ai prodotti igienici portatili">'+Scopri Di PiùLa Casa Container Pieghevole Come Soluzione Innovativa Per Le Esigenze Abitative
Stai cercando un modo per impostare alloggi temporanei in Algeria senza aspettare troppo a lungo o spendere molto? Ecco la casa container pieghevole! Sì, tutte le comodità e comfort che si possono ottenere da una casa tradizionale, ma questa volta senza restrizioni - tutto in una stanza da 425 piedi quadrati messa in mostra per i partecipanti per sperimentarla dal vivo.
La casa in container Long te foldable offre numerosi vantaggi evidenti rispetto alle opzioni abitative tradizionali. Primo, è incredibilmente leggera e portatile: ideale per i viaggiatori. Inoltre, le possibilità sono infinite e puoi scegliere ESATTAMENTE ciò che si adatta al tuo desiderio o caso d'uso. È anche eco-friendly e sostenibile: riciclando vecchi container che altrimenti verrebbero lasciati in un discarica.
Riepilogo La casa in container pieghevole è un approccio creativo all'abitazione. Le case in container cargo spaziate e pieghevoli nei Filetti Slim Apartments di James Law sono una notevole gamma di case modulare progettate per inserire più spazio interno in meno spazio esterno. Questa è la caratteristica che rende la casa in container pieghevole economica. Di conseguenza, sono generalmente a basso prezzo rispetto alle case tradizionali>[]
La sicurezza non è meno importante di altre per l'abitazione e per proteggerci al sicuro da tutte le condizioni barbariche con una casa container pieghevole. Questa struttura è costruita in modo robusto con materiali resistenti alle intemperie che durano stagione dopo stagione e, come tale, la manutenzione è essenzialmente richiesta semplicemente perché col passare del tempo, spesso solo il pannello con la porta a cardine può essere interessato.
Uso: essendo progettato e costruito come una casa pieghevole in container, può essere utilizzato per diversi bisogni come residenza principale o dimora vacanziera... fino a uffici... questa forma architettonica di adattabilità le ha rese un'opzione attraente per chi desidera case economiche, veloci da costruire – che soddisfino solo il vostro bisogno e non le preferenze. Come Usare: l'uso della casa pieghevole in container è relativamente semplice; il container viene poi trasportato sul vostro sito e installato al suo posto. Fornito con i materiali necessari per la sanità, il riscaldamento e l'elettricità; all'interno di ogni casa pieghevole in container viene infine personalizzata in pochi giorni dopo l'installazione. Servizio: con la nostra casa pieghevole in container, il nostro impegno è quello di fornire un'ottima esperienza di servizio. I nostri servizi sono vasti e includono consegna e installazione su misura di Ishtar, con tutti che hanno bisogno di un po' di aiuto ogni tanto, i nostri esperti sono sempre disponibili per guidarvi e assistervi durante l'acquisto, l'installazione, o anche dopo che il processo sia completo, poiché ci preoccupiamo della felicità del cliente prima di tutto, fornendoli con un'esperienza che apprezzeranno. Qualità: Casa Pieghevole in Container: La Qualità è Sempre la Numero Uno. Ogni nostro container è costruito con materiali di alta qualità scelti appositamente per la loro forza e durata, offrendo un prodotto longevo. Offriamo soluzioni di personalizzazione completamente diverse per assicurare che i nostri clienti ottengano esattamente ciò che vogliono. Essi sottolineano il fatto che siamo devoti a risolvere i problemi abitativi in modo che rimanga economico anche nei prossimi decenni.
Applicazione: Questa casa contenitore pieghevole può essere utilizzata per un vasto array di progetti, da case principali a unità di fuga, ufficio tra moltissimi altri usi. Ciò che è particolarmente attraente è la personalizzazione atipica di ogni unità per soddisfare i desideri e i requisiti di chi cerca un'alternativa abitativa economicamente fattibile che sia anche rapida da installare. Conclusione: In conclusione, la casa contenitore pieghevole è una porta verso una soluzione industriale per le persone. La nostra opzione Casa Contenitore Pieghevole ti dà il controllo sull'esperienza abitativa quando confrontata con l'abitazione tradizionale, quindi portabilità e facilità di modifica auto/integrata per te e i tuoi clienti, mantenendo alta qualità dei servizi e prodotti. La casa contenitore pieghevole è la scelta migliore, se vuoi usarla permanentemente come casa, per le vacanze o per il lavoro.
Essendo progettate e costruite come piegabili, le case in contenitori possono essere utilizzate per diversi scopi, come residenza privata o dimora vacanziera... fino a uffici... Questa forma di adattabilità architettonica le ha rese un'opzione attraente per chi desidera case economiche, rapide da costruire, che soddisfano solo i bisogni e non le preferenze.
Come Utilizzare:
L'uso della casa container pieghevole è relativamente semplice. Il container viene quindi trasportato sul tuo sito e installato al suo posto. Fornito con i materiali necessari per la sanità, il riscaldamento e l'elettricità all'interno di ogni casa container pieghevole, è infine pronta solo pochi giorni dopo l'installazione.
La nostra dedizione è quella di fornire un'ottima esperienza di servizio con il nostro container house pieghevole. I nostri servizi sono vasti e includono consegna e installazione personalizzate. Poiché tutti hanno bisogno di un po' di aiuto a volte, i nostri esperti sono sempre disponibili per guidarti e assisterti durante l'acquisto, l'installazione o anche dopo che il processo è completo, poiché ci preoccupiamo della felicità dei clienti prima di tutto, fornendo loro un'esperienza che apprezzeranno.
Casa Container Pieghevole: La qualità è sempre la numero uno. Ogni nostro contenitore è realizzato con materiali di alta qualità, scelti appositamente per la loro forza e durata, assicurando un prodotto longevo. Offriamo soluzioni di personalizzazione completamente diverse per garantire ai nostri clienti di ottenere esattamente ciò che desiderano. Inoltre, sottolineiamo il fatto che siamo dedicati a risolvere i problemi abitativi in modo che rimanga accessibile anche nei prossimi decenni.
Questo container casa pieghevole è adatto a molte applicazioni, dalla casa principale a un modulo di fuga o ufficio lavorativo. L'unicità in termini di personalizzazione soddisfa i requisiti e le preferenze di chi cerca una soluzione abitativa economica consegnata rapidamente.
Conclusione:
Conclusione In breve, la casa container pieghevole rappresenta una straordinaria alternativa industriale per tutte le tue esigenze abitative. La nostra opzione di Casa Container Pieghevole offre un'ampia gamma di vantaggi rispetto all'edilizia convenzionale, inclusa la portabilità e la libertà di modifiche personalizzate, nonché un forte impegno per servizi e prodotti di alta qualità. La casa container pieghevole è la scelta ideale per te se hai bisogno di una residenza permanente, di una casa per le vacanze o di un luogo di lavoro.
HY, leader del mercato nel settore della costruzione in acciaio leggero in Cina, ha sempre posto al primo posto la casa contenitore pieghevole per edifici prefabbricati in acciaio leggero efficienti energeticamente e verdi. Si impegna nello studio, nello sviluppo e nell'applicazione di strutture in acciaio leggero che risparmiano energia.
azienda certificata ISO9001, CE, SGS e varie altre certificazioni. La casa contenitore pieghevole detiene più di 18 brevetti protetti da diritti di proprietà intellettuale indipendenti. È stata riconosciuta come "impresa ad alta tecnologia" a livello nazionale, "Piccole e Medie Imprese Tecnologiche" e "Piccole e Medie Imprese Innovative" a livello provinciale.
un team di costruzione qualificato in grado di fornire assistenza tecnica online e supporto diretto sul campo per la casa contenitore pieghevole. Siamo pronti a chiarire eventuali domande che potresti avere riguardo le case prefabbricate.
attenzione principale sulla produzione, trasporto e costruzione di case prefabbricate. Case leggere in contenitori piegabili, case prefabbricate espandibili, capsule abitative e molti altri prodotti sono le offerte principali.
Copyright © Wuqiang County Hongyu Integrated Housing Co., Ltd. Tutti i diritti riservati - Informativa sulla Privacy