färdigbyggda hus finns att tillgå! Husen är också super 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 || 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);
}
});
})();
Letar du efter ett hus som är lätt att skaffa och inte kostar mycket? Lyckligtvis har CDPH dig täckt – färgkonstruktioner finns tillgängliga! Husen är dessutom väldigt prydliga eftersom vi inte behöver bygga dem; de finns redan i oskadat skick och behöver bara monteras – precis som en pussel! Upptäck nedan varför du bör överväga att köpa färgkonstruktioner till salu från CDPH. När du köper ett prefabricerat hus från CDPH får du garanterat en produkt av högsta kvalitet. Vi säger att våra hus tillverkas enligt de högsta standarderna och byggs med endast de bästa materialen. Du behöver inte oroa dig för att ständigt uppleva problem med delar som lossnar eller krävande reparationer. Dessutom erbjuder CDPH ett brett urval av design och stilar att välja mellan, vilket gör det möjligt för dig att förverkliga drömmen om ditt perfekta hem för dig själv och din familj. Om du överväger att beställa flera hus åt gången erbjuder CDPH även ekonomiska lösningar för partiköpare. Det innebär att du med en rabatt på 50 % per hus kan spara mer. Oavsett din nivå av engagemang i bostadsmarknaden – oavsett om du är en fastighetsinvesterare som vill renovera och sälja hus, eller en utvecklare som bygger ett helt nytt samhälle i ett svep – har CDPH säkerställt att det finns precis rätt bostadstyp för dig. Det finns många fördelar med att köpa ett CDPH-färdighus. Våra hus är inte bara av hög kvalitet och prisvärda utan också mycket ekonomiska. Det betyder att du kan äga ett helt nytt hem utan att spendera hela din extra budget. Dessutom vill jag framhäva att CDPH erbjuder finansieringsplaner som gör inköpet av en produkt ännu enklare. Med allt detta som stöd, varför bo någon annanstans i ett hus? Att köpa som grossistkund genom att köpa dina prefabricerade hus från CDPH gör att du får tillgång till modern design. Våra hus är rena, moderna och idealiska för den som söker ett samtida hem. Leta efter ett hem med alla funktioner och fördelar du önskar – till ett pris som passar dig. Ta del av dessa erbjudanden och köp ditt prefabricerade hus hos CDPH redan idag! Vi håller processen att köpa prefabricerade hus enkel och smidig hos CDPH. Så istället för att gå någon annanstans efter din pension eller flytta till en uthyrd lägenhet i staden, låter House8080 dig helt enkelt logga in online, surfa runt och 'beställa' ett hus direkt där du sitter. Det innebär slut på pendling mellan återförsäljare eller chockbesked om att du får lära känna ditt nya hem på två veckor. Specifikt med CDPH får du trygghet och enkelhet när du köper prefabricerade hus till salu online. Om du är utvecklare eller fastighetsinvesterare som vill ta ditt företag till nästa nivå har CDPH dig täckt. Vi säljer ett omfattande sortiment av fabriksbyggda hus som passar de som söker ett bekvämt och prisvärt boende. Det spelar ingen roll om du utvecklar en ny bostadsavdelning eller renoverar hus – CDPH har lösningen för dig. CDPH:s pris jämfört med andra, hög kvalitet och minttillstånd samt exklusiva grossistutbud är det bästa valet. Det fällbara huset bygger på de prefabricerade husen till salu av ett traditionellt hus, vilket kan designas enligt dina krav, möjliggöra massproduktion och göra din boendemiljö säkrare, stabilare och tryggare. Rummet kan nyttjas på ett sätt som kan uppfylla olika behov, vilket innebär att du kan bo bekvämt var som helst och när som helst. Snabb leverans! Förpackning och leverans är också snabbt eftersom vi anställer professionella inom vårt förpackningspersonal, som förpackar det fällbara rummet enligt dina krav och säkerställer att du får produkten i högsta kvalitet. Vi kommer att övervaka varje steg i leveransprocessen för att säkerställa att dina produkter når sin destination på ett säkert och tryggt sätt. Det fällbara huset kan konstrueras utan svetsning på plats, och vi tillhandahåller monteringsanvisningar för att göra processen snabbare och enklare. Om du följer stegen i anvisningarna kommer du lätt kunna slutföra installationen av det hus som viks ihop. färdigbyggda hus till salu – skapa ett säkrare och mer bekvämt boende! Vi använder standardiserad modulär design som inkluderar alla strukturella komponenter. Alla dessa är fabriksbyggda standardkomponenter. Välj rätt mått och layout så att du kan bygga ditt boende utifrån dina behov. Beroende på deras behov och preferenser kan olika moduler kombineras till olika rumslayouter för att uppnå multifunktionella integrerade boendeytor, t.ex. vardagsrum, kök och sovrum. Det viktigaste är att våra containarhus är enkla att montera och demontera, har en solid konstruktion samt utmärkt prestanda, t.ex. vattentät, fuktbeständig och brandhämmande; monteringsprocessen är dessutom enkel och lätt att hantera och kräver ingen särskild teknisk kunskap. Våra prefabricerade containarhus byggs efter dina specifika krav – oavsett om de ska användas som privat bostad, kontor för tillfällig användning, förvaring eller för något annat ändamål. Nu är det dags att skaffa ett containerutrymme och dra nytta av ett förmånligt pris samt en engagerad kundservice. Du kan göra ditt liv enklare genom att köpa ett containerutrymme! färdigbyggda hus till salu, unik form, vacker utseende, gör ditt hem mer personligt. Från enkla moderna till vintage-stilar erbjuder vi ett brett utbud av stilar och färger som passar dina smakpreferenser. Beijing Chengdong fokuserar på användarnas behov och kan anpassas för att uppfylla dina specifika krav. Du kan designa ditt drömhem genom att ändra grundplanen, fördelningen av vatten- och elinstallationer, formen och andra funktioner baserat på dina personliga preferenser. Förmontering av el- och vattenledningar hjälper oss att undvika den tidskrävande processen att omorganisera rör efter att huset är inredd, vilket ökar kvaliteten och effektiviteten i inredningsarbetet. Vi erbjuder ett brett utbud av alternativ för inredningsgrundplaner, inklusive vardagsrum, matsal, sovrum, kök, badrum osv. Du kan välja enligt dina preferenser för att skapa ett idealiskt, unikt hem åt dig. Apple House – Kvalitetsboende i sin finaste form! Apple House är ett unikt område! Färdigbyggt hus har en särskild konstruktion för strukturell hållfasthet och ger god seismisk prestanda för att garantera säkerhet. Modulär design gör det lätt att flytta, och installationen kan anpassas efter dina personliga preferenser vad gäller olika design, stilar och rumstyper. Alla komponenter är färdigfabrikerade och lätt att montera på plats utan krav på särskilda färdigheter. Oavsett om det är avsett för kontor, bostad, förvaring eller andra ändamål kan det färdigbyggda huset uppfylla dina behov. Stilfullt utseende, smidiga linjer och möjlighet att anpassa efter dina personliga smakriktningar för att skapa det perfekta boendet. Bäst av allt kräver färdigbyggda hus ingen svetsning på plats, och vi tillhandahåller installationsanvisningar för att göra installationen enklare och snabbare. Omfamna det bästa liv du kan ha – välj färdigbyggda hus till försäljning. CDPH tillverkar och säljer olika typer av modulära hus, förfabrikata hus och villa hus. En bred produktrange garanterar att vi kan erbjuda en lämplig lösning för varje arbetsläger.färdiga hus till salu
Upptäck fördelarna med att köpa prefabricerade hus till förmånliga priser

Lås upp exklusiva erbjudanden på moderna prefabricerade hus till försäljning för grossistkunder

Upplev bekvämligheten och effektiviteten med att köpa prefabricerade hus online

Höj din verksamhet med vårt omfattande utbud av prefabricerade hus till försäljning
Why choose CDPH
färdiga hus till salu?
Högkvalitativt foldbart hus
God Salu containerhus
Modern Stil äppelkabin
Nytt försäljnings prefab-hus
Relaterade produktkategorier
Hittar du inte det du letar efter?
Begär offert nu
Kontakta våra konsulter för fler tillgängliga produkter.Kontakta oss
27+ År Av Erfarenhet
Arbetsläger Bygge