da CDPH...">
,需要通过父级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);
}
});
})();
As casas-cápsula são casas minúsculas que têm ganhado força em grandes cidades em todo o país, assim como as do CDPH. casa cápsula . As casas são minúsculas, aproximadamente do tamanho de um quarto pequeno. Elas são, por design, eficientes no uso do espaço e praticamente tudo se encaixa em uma área minúscula. Isso as torna uma ótima escolha para aqueles que querem estar na cidade e morar lá. Na China, onde muitas pessoas vivem nas cidades e não há espaço suficiente para todos terem uma casa grande, as casas-cápsula estão ficando mais populares. Por exemplo: Eles já têm uma população enorme e são cidades tão grandes que até encontrar um lugar onde se possa morar é difícil. As pessoas querem viver perto do local onde trabalham e se divertem, mas não em um apartamento caro e grande. As casas-cápsula poderiam funcionar muito bem, também a CDPH casa cápsula moderna . Elas custam muito pouco para alugar, ocupam praticamente nenhum espaço no chão, então são ideais para viver na cidade. Itens que você pode ter chegado em uma cidade, como Pequim já foi uma entre várias cidades. O fato de que essas cidades estão muito congestionadas, muitas pessoas correndo de um lado para o outro lutando para conquistar um nicho confortável. É por isso que muitas das pessoas modernas, desde crianças até trabalhadores, gostam de casas cápsula. Isso permite que as pessoas vivam na cidade sem ter um grande custo com aluguel caro. As casas cápsula também são fáceis de mover, similares às da CDPH. casas pré-fabricadas modernas . Você pode levar sua casa cápsula com você se algum dia precisar mudar de emprego ou escola. Você pode ter visto notícias mostrando imagens do interior de uma casa-cápsula na China, onde se vê que é um ambiente extremamente pequeno. Enquanto a cama parece mais com um beliche, simplesmente escondida no topo da casa. Além disso, há prateleiras pequenas para colocar suas roupas e itens pessoais. Outras vezes, ele pode ter uma pequena mesa ou escrivaninha onde faz seus deveres de casa, toma suas refeições que não sejam no sofá etc. As casas-cápsulas geralmente têm um banheiro minúsculo também útil para necessidades diárias. Veja como eles conseguem encaixar tanto em um espaço tão pequeno — um design genial. As casas-cápsula são uma nova tendência na China, que podem dar algumas pistas sobre como será a moradia se vivermos mais. À medida que todos retornam para casa nas cidades, não há como garantir que alguém e seu cachorro tenham um apartamento ou casa espaçosa. Portanto, as casas-cápsula são uma excelente solução porque não ocupam muito espaço e todos podem arcar com elas. A casa dobrável é construída segundo um padrão modular que pode ser configurado conforme os requisitos da sua casa em cápsula na China. Isso permite a produção em massa e torna sua casa mais segura, estável e confiável. Além disso, o espaço pode ser combinado de forma flexível para atender a diferentes necessidades de uso, proporcionando-lhe uma experiência de vida confortável a qualquer momento e de qualquer lugar. Entrega rápida! O processo de entrega e embalagem é extremamente ágil. Contamos com uma equipe especializada em embalagem, que prepara a sala dobrável conforme suas especificações, garantindo que você receba o melhor produto possível. Monitoramos cada etapa do processo de entrega para assegurar que seus itens cheguem ao destino em perfeitas condições. Trata-se também da opção mais conveniente, pois a sala se dobra facilmente e pode ser montada no local sem necessidade de soldagem, e fornecemos instruções de instalação para facilitar e agilizar sua montagem. Se você seguir nossas instruções, a instalação da casa dobrável será simples. A casa cápsula da China é construída com um design exclusivo para resistência estrutural e é capaz de oferecer um bom desempenho sísmico, garantindo segurança. Design modular, fácil de transportar; a instalação pode ser adaptada conforme as preferências pessoais quanto a diversos estilos e tipos de cômodos. Todos os elementos são fabricados com materiais pré-fabricados e de fácil instalação, não exigindo habilidades especializadas. Seja para uso como área residencial, espaço comercial, escritório, depósito ou em diferentes cenários, a casa pré-fabricada atende às suas necessidades. Aparência elegante, linhas refinadas e personalizável conforme suas preferências individuais, criando um espaço habitacional único. O melhor de tudo é que as casas pré-fabricadas não exigem soldagem no local, além de fornecermos instruções de instalação para tornar o seu processo de montagem mais simples e rápido. Aproveite a melhor qualidade de vida possível e escolha as casas pré-fabricadas Chengdong. Cabine Apple, formato único, aparência bonita, torne sua casa mais personalizada. Temos uma variedade de cores e estilos para atender às suas necessidades estéticas, desde o moderno básico até o vintage. Beijing Chengdong está focada nas necessidades do usuário, podendo ser customizada para atender às suas necessidades específicas. Você pode construir sua casa dos sonhos ajustando o layout, a eletricidade e a água, a forma e outras casas cápsula da China com base em suas preferências. Nós pré-fabricamos os encanamentos e os circuitos elétricos antes da construção, evitando assim o trabalho árduo de rearranjar os tubos e fios após a decoração da casa, melhorando a eficiência e qualidade da decoração. Você pode escolher entre várias soluções de design interior para sua sala de estar, área de jantar, quarto, banheiro, cozinha e muito mais. Uma vida de qualidade, começa com a Casa Apple! Venha e experimente o charme único da Casa Apple! Casa de contêiner: torne sua vida mais segura e confortável! Todos os componentes estruturais são pré-fabricados em fábrica. Ao escolher as dimensões, a configuração e o design adequados, você pode construir seu espaço habitacional rapidamente. Com base nos requisitos e preferências do cliente, os diversos módulos podem ser combinados para criar diferentes layouts de cômodos, incluindo cozinha, casa cápsula da China e quartos. O mais importante é que nossa casa de contêiner é fácil de montar e desmontar, possui estrutura estável e excelente desempenho — como impermeabilização, proteção contra umidade e prevenção contra incêndios —, além de um processo de instalação simples e de fácil gerenciamento, sem exigir nenhum nível técnico especializado. As casas de contêiner que construímos são personalizadas conforme suas necessidades, seja para residência particular, escritórios temporários, armazenamento ou qualquer outra finalidade. Chegou a hora de adquirir uma sala em contêiner, com preço reduzido e atendimento ao cliente atencioso. Melhore sua qualidade de vida comprando uma sala em contêiner! A CDPH fabrica e vende vários tipos de casa modular, casa pré-fabricada e casa de villa. Uma ampla gama de produtos garante que possamos fornecer uma solução adequada para cada acampamento de engenharia.Casa cápsula china
O Uber das Casas Capsula na China

Casas Capsula em Cidades Movimentadas

Dentro das Casas Capsula

O Futuro das Casas Capsula
Why choose CDPH
Casa cápsula china?
Casa dobrável de alta qualidade
Nova chegada casa pré-fabricada
Cabine apple no Estilo Moderno
Boas Vendas casa de contêiner
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
27+ Anos de Experiência
Construção de Acampamento de Engenharia