in vendita per un'abitazione ecologica accessibile. Le case in stile cottagecore sono quella casetta che rappresenta uno dei tasselli nel...">
,需要通过父级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);
}
});
})();
TROVA Case Prefabbricate Piccole In vendita per il massimo del vivere sostenibile ed economico. Le case in stile Cottagecore sono quella piccola casa che rappresenta uno dei tasselli necessari per completare il quadro e creare una casa confortevole. Offriamo diverse opzioni di case minuscole CDPH. Sono altamente personalizzabili, in modo da poterle stilizzare in modo unico. Sono inoltre più sostenibili, non solo perché sono adorabili nell'aspetto, ma anche perché richiedono meno materiali e energia per la costruzione. Sfoglia la nostra vasta gamma di prodotti ad alta efficienza energetica case minuscole su ruote . È un'esperienza simile a entrare in un negozio di caramelle, ma invece stai acquistando una piccola casa tutta tua. Puoi scegliere il numero di stanze, il colore delle pareti e persino lo stile del tetto che preferisci. E indovina un po'? Le nostre case sono molto, molto ben isolate, quindi consumano poca energia, il che è positivo per il pianeta. Acquista ai nostri prezzi all'ingrosso una soluzione abitativa prefabbricata in miniatura, per ottenere l'alloggio dei tuoi sogni mantenendoti entro i limiti del tuo budget. Se non sai cos'è il prezzo all'ingrosso! È un po' come trovare un affare fantastico. Offriamo le nostre case prefabbricate in miniatura a prezzi all'ingrosso presso CDPH, per aiutarti a diventare proprietario della casa dei tuoi sogni spendendo meno. Potremmo chiamarla una specie di bonus perché paghiamo una cifra irrisoria. Poi potrai usare i tuoi soldi per cose divertenti come giocattoli o dolcetti per il tuo cane! I nostri Kit per Case Minuscole Pronto da Assemblare: Comodo e Premium Hai mai completato un puzzle o costruito un modello di qualche tipo? Prova i nostri kit per case in miniatura (che contengono praticamente tutto ciò di cui avrai bisogno per costruire la tua piccola casa!) Arrivano in una scatola grande con tutti i pezzi — devi solo avere un po' di pazienza e seguire le istruzioni! Pensa a questo come a giocare con i mattoncini Lego, solo su scala molto più grande. Ed è ancora meglio perché poi puoi viverci dopo aver completato il processo di allestimento. Scegli qualcosa di sostenibile e unico: le nostre case prefabbricate di alta qualità che seguono la tendenza dello stile di vita elegante. Sostenibile, hai mai sentito questa parola? Potrebbe essere diversa da ciò che ti aspetti, ma significa anche prendersi cura della Terra e utilizzare meno risorse, in modo da poter proteggere al massimo la Madre Natura. Costruzione di alta qualità — Le nostre case prefabbricate dureranno per molti anni a venire grazie alla loro elevata maestria artigianale e ai professionisti altamente qualificati. Per non parlare del fatto che sono bellissime e molto chic, un pezzo eccezionale da esibire, secondo me! Quindi, diventa uno dei protagonisti con questa unità di tendenza per moderare volontariamente l'impatto sul pianeta; acquista una casa prefabbricata piccola da CDPH. Le case prefabbricate di piccole dimensioni sono costruite secondo uno standard modulare che consente di assemblarle in base alle esigenze della vostra abitazione. Ciò rende possibile la produzione su larga scala e garantisce maggiore sicurezza, stabilità e affidabilità alla vostra casa. Allo stesso tempo, la stanza pieghevole è combinabile in modo flessibile per soddisfare diverse esigenze d’uso, permettendovi di godere del comfort domestico in qualsiasi momento e ovunque. Consegna rapida! Spedizione e imballaggio sono estremamente veloci: utilizziamo un team specializzato nell’imballaggio, che confeziona lo spazio pieghevole secondo le vostre specifiche, garantendo la ricezione di un prodotto di altissima qualità. Durante il processo di consegna teniamo traccia di ogni singola fase, per assicurare che la merce arrivi in sicurezza a destinazione. Si tratta inoltre dell’opzione più comoda, poiché la stanza si piega facilmente e può essere montata sul posto senza saldature. Forniamo linee guida per l’installazione, per rendere il montaggio più rapido ed efficiente. Seguendo semplicemente i passaggi indicati nelle istruzioni, potrete completare agevolmente il montaggio della casa pieghevole. Le case prefabbricate mini sono facili da costruire e non richiedono competenze specifiche. Possono essere utilizzate per abitare, ufficio, deposito o qualsiasi altro scopo. La casa container può creare uno spazio abitativo più sicuro e confortevole! Utilizziamo progetti modulari standard, tutti i componenti strutturali sono prefabbricati in fabbrica secondo standard industriali. Scegliete le dimensioni e la configurazione più adatte per costruire rapidamente uno spazio abitativo che soddisfi le vostre esigenze. In base alle vostre richieste e preferenze, diversi moduli possono essere combinati in varie disposizioni di ambienti, realizzando così case prefabbricate compatte con spazi integrati come soggiorno, cucina o camera da letto. La nostra casa container presenta ottime caratteristiche, tra cui impermeabilità all’acqua, resistenza alla corrosione e al fuoco. L’installazione è semplice e diretta e non richiede conoscenze tecniche specifiche. Che si tratti di un’abitazione privata, di un ufficio temporaneo, di un deposito o di altre esigenze, le nostre case container prefabbricate sono progettate per soddisfare le vostre necessità. È ora il momento di investire in una stanza container, approfittando di un prezzo vantaggioso e di un servizio clienti attento. Migliorate la vostra vita acquistando una stanza container! Casa Apple, forma unica, aspetto elegante, per rendere la tua casa più personalizzata. Offriamo una vasta gamma di stili e colori per soddisfare i tuoi gusti personali, dallo stile semplice e contemporaneo a quello tradizionale. Beijing Chengdong si concentra su case prefabbricate di piccole dimensioni e offre la possibilità di personalizzarle in base alle tue esigenze. Per soddisfare i tuoi desideri e preferenze individuali, puoi personalizzare il design della tua casa, la disposizione degli ambienti, gli impianti idrici ed elettrici, ecc., al fine di costruire per te una casa ideale e unica. Abbiamo progettato e realizzato in anticipo gli impianti elettrici e idrici prima della costruzione, evitando così l’operazione dispendiosa in termini di tempo di riprogettare tali impianti dopo la decorazione della casa e migliorando così l’efficacia e la qualità della finitura. Puoi scegliere tra un’ampia gamma di soluzioni di interior design per il tuo soggiorno, la zona pranzo, la camera da letto, la cucina e molto altro ancora. Una vita di qualità, partendo dalla Apple House! Apple House è un’area unica! CDPH produce e vende vari tipi di case modulari, case prefabbricate e ville. Un ampio range di prodotti ci consente di fornire una soluzione adatta per ogni campo ingegneristico.case Prefabbricate Piccole
Esplora la nostra ampia selezione di case minuscole personalizzabili ed energeticamente efficienti

Trova la casa dei tuoi sogni rispettando il budget grazie ai nostri prezzi all'ingrosso su case prefabbricate in miniatura

Scopri la comodità e la qualità dei nostri kit per case in miniatura pronti per l'assemblaggio

Unisciti alla crescente tendenza della vita sostenibile con le nostre resistenti e stilose case prefabbricate in miniatura
Why choose CDPH
case Prefabbricate Piccole?
Casa pieghevole di alta qualità
Nuova arrivo casa prefabbricata
Casa in contenitore vendita buona
Stile Moderno apple cabin
Categorie di prodotti correlati
Non trovi quello che stai cercando?
Richiedi un preventivo ora
Contatta i nostri consulenti per ulteriori prodotti disponibili.Contattaci
27+ Anni Di Esperienza
Costruzione del Campo Ingegnoso