Procurando uma maneira de montar alojamento temporário na Argélia sem esperar ... ">
,需要通过父级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) } }) })();
        Sai das Soluções Habitacionais Tradicionais e Permite Banheiro Portátil e Materiais Sanitários">'+Saiba MaisCasa em Container Dobrável Como Uma Solução Inovadora Para Necessidades Habitacionais
Procura uma maneira de montar alojamento temporário na Argélia sem esperar muito ou gastar demais? Apresentamos o container casa dobrável! Sim, todas as comodidades e confortos que você pode obter de uma casa tradicional, mas desta vez sem restrições - tudo em um cômodo de 425 pés quadrados colocado à disposição dos participantes para experimentarem ao vivo.
A casa em contêiner Long te dobrável oferece uma série de benefícios óbvios em comparação com opções tradicionais de moradia. Primeiro, é incrivelmente leve e portátil - ideal para viajantes. Além disso, as possibilidades são infinitas e você pode escolher EXATAMENTE o que atende às suas necessidades ou caso de uso. Também é ecologicamente correta e sustentável - reciclando velhos contêineres de transporte que de outra forma seriam deixados em um aterro.
Resumo A casa em contêiner dobrável é uma abordagem criativa para a habitação. Os contêineres de carga economizadores de espaço, dobráveis, nos Apartamentos Filetti Slim por James Law são uma notável gama de casas modulares projetadas para encaixar mais espaço interno em menos espaço externo. Esta é a característica que torna a casa em contêiner dobrável custo-benefício. Como resultado, elas geralmente são mais baratas em comparação com casas típicas>[]
A segurança não é algo mais importante do que outros para moradia e proteção segura contra todas as condições bárbaras com uma casa de contêiner dobrável. Essa estrutura é construída forte com materiais resistentes ao tempo que duram temporada após período e, portanto, a manutenção é essencialmente necessária simplesmente porque ocorre o desgaste com o tempo, que muitas vezes afeta apenas o painel da porta de correr.
Uso: sendo projetado e construído como uma casa de contêiner dobrável, pode ser aplicável a várias necessidades, como residência principal ou casa de férias... até escritórios... essa forma arquitetônica de adaptabilidade as tornou uma opção atraente para pessoas que desejam moradias acessíveis e rápidas – construídas apenas para atender às suas necessidades e não preferências. Como Usar: o uso da casa de contêiner dobrável é relativamente simples; o contêiner é então transportado para o seu local e instalado no lugar. Fornecido com os materiais necessários de encanamento, aquecimento e eletricidade; dentro de cada casa de contêiner dobrável, tudo é ajustado em poucos dias após a instalação. Serviço: com nossa casa de contêiner dobrável, nosso compromisso é oferecer uma excelente experiência de serviço. Nossos serviços são amplos e incluem entrega e instalação personalizadas, com todos precisando de um pouco de ajuda de vez em quando, nossos especialistas estão sempre disponíveis para orientá-lo e assisti-lo durante sua compra, instalação, ou mesmo após o processo estar concluído, pois priorizamos a felicidade do cliente acima de tudo, proporcionando-lhes uma experiência que eles irão apreciar. Qualidade: Casa de Contêiner Dobrável: Qualidade é Sempre Prioridade Nº1. Cada uma de nossas unidades é construída com materiais de alta qualidade, especificamente escolhidos por sua força e durabilidade, oferecendo um produto de longa duração. Oferecemos soluções de customização completamente diferentes para garantir que nossos clientes obtenham exatamente o que desejam. Isso reforça o fato de que estamos dedicados a resolver questões habitacionais de maneira que continue sendo acessível por décadas.
Aplicação: Esta casa em contêiner dobrável pode ser usada para uma ampla gama de projetos, desde casas principais até uma unidade de fuga, escritório de trabalho entre outros múltiplos usos. O que é especialmente atraente é a customização atípica de cada unidade para atender aos desejos e requisitos daqueles que procuram uma alternativa de moradia financeiramente viável que também seja rápida para instalar. Conclusão: Em conclusão, a casa em contêiner dobrável é uma porta de entrada para uma solução industrial para indivíduos. Nossa opção de Casa em Contêiner Dobrável lhe dá o poder sobre sua experiência de moradia quando comparada à moradia tradicional, proporcionando portabilidade e a facilidade de modificação autointegrada para você e seus clientes, enquanto mantém a alta qualidade de serviços e produtos. A casa em contêiner dobrável é a melhor escolha, se você for usá-la permanentemente como uma casa, para férias ou para trabalho.
Sendo projetada e construída como uma casa dobrável, ela pode ser aplicada a várias necessidades, como residência ou moradia de férias... até mesmo escritórios... Essa forma arquitetônica de adaptabilidade as tornou uma opção atraente para pessoas que desejam uma casa acessível e rápida, construída apenas para satisfazer suas necessidades e não preferências.
Como Usar:
O uso da casa-container dobrável é relativamente simples. O container é então transportado para o seu local e montado no lugar. Com fornecimento de encanamento, aquecimento e materiais elétricos necessários dentro de cada casa-container dobrável, tudo fica pronto apenas alguns dias após a instalação.
Nosso compromisso é oferecer uma ótima experiência de serviço com nossa casa-container dobrável. Nossos serviços são amplos e incluem entrega e instalação customizadas. Como todos precisam de um pouco de ajuda de vez em quando, nossos especialistas estão sempre disponíveis para orientá-lo e assisti-lo durante a compra, instalação ou mesmo após o processo estar concluído, pois priorizamos a felicidade do cliente acima de tudo, proporcionando-lhes uma experiência que eles gostariam.
Casa Container Dobrável: A qualidade é sempre Número 1. Cada uma de nossas caixas é feita de materiais de alta qualidade, escolhidos especificamente por sua força e durabilidade, garantindo um produto de longa duração. Oferecemos soluções de personalização diferentes para garantir que nossos clientes obtenham exatamente o que desejam. Além disso, reforçamos o compromisso de resolver nossos problemas de moradia de maneira acessível por décadas.
Este container casa dobrável é adequado para muitas aplicações, desde uma residência principal até uma unidade de fuga ou escritório de trabalho. A singularidade em termos de personalização atende às necessidades e preferências de pessoas que buscam uma opção de moradia acessível entregue rapidamente.
Conclusão:
Conclusão Em resumo, a casa em container dobrável é uma alternativa excepcional e prática para todas as suas necessidades de moradia. A nossa opção de Casa em Container Dobrável oferece uma ampla gama de benefícios em comparação com a habitação convencional, incluindo portabilidade e a liberdade para modificações pessoalizadas, além de manter um forte foco em serviços e produtos de alta qualidade. A casa em container dobrável é a escolha perfeita para você se precisar de uma residência permanente, casa de férias ou local de trabalho.
HY, líder de mercado na indústria de construção em aço leve na China, sempre colocou o desenvolvimento de edifícios pré-construídos eficientes em termos de energia e verdes no topo de sua lista. Está comprometida com o estudo, desenvolvimento e aplicação de estruturas de aço leve que economizam energia.
empresa certificada pela ISO9001, CE, SGS e várias outras certificações. Casa de contêiner dobrável, possui mais de 18 patentes protegidas sob direitos de propriedade intelectual independentemente detidos. Foi reconhecida como uma "empresa de alta tecnologia" a nível nacional, "Pequenas e Médias Empresas de Ciência e Tecnologia" e "Pequenas e Médias Empresas Inovadoras" a nível provincial.
equipe de construção qualificada capaz de fornecer casa em contêiner dobrável no local e também suporte técnico online. Estamos prontos para responder a qualquer pergunta que você possa ter sobre casas pré-fabricadas.
foco principal é a produção, transporte e construção de casas pré-fabricadas. Casas pré-fabricadas leves em contêineres dobráveis, casas expansíveis, cápsulas de espaço e muitos outros produtos são nossas principais ofertas.
Copyright © Wuqiang County Hongyu Integrated Housing Co., Ltd. Todos os direitos reservados - Política de privacidade