mga prefab na bahay ay puwedeng-puwede na! Ang mga bahay ay 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);
}
});
})();
Naghahanap ka ba ng bahay na madaling makuha at hindi masyadong mahal? Sa biyaya, covered ka ng CDPH — mga bahay na prefab ay handa nang kunin! Napakalinis din ng mga bahay dahil hindi namin kailangang gawin ang bawat piraso; umiiral na ito nang buo at kailangan lamang i-assembly—parang puzzle! Alamin sa ibaba kung bakit dapat mong isipin na bilhin ang mga bahay na prefab na nasa sale mula sa CDPH. Ang pagbili ng isang Prefab House mula sa CDPH ay nagagarantiya sa iyo ng produkto na may pinakamataas na kalidad. Ang aming sasabihin ay ang aming mga bahay ay ginawa ayon sa pinakamataas na pamantayan at itinayo gamit lamang ang pinakamahusay na materyales. Hindi mo kailangang mag-alala tungkol sa patuloy na mga problema tulad ng pagkakalag lag o pangangailangan ng mga repasyon. Bukod dito, ang CDPH ay may malawak na seleksyon ng mga disenyo at istilo na maaari mong piliin, upang matupad ang iyong pangarap na bahay para sa iyong sarili at sa iyong pamilya. Kung ikaw ay isinasaalang-alang na mag-order ng maraming bahay nang sabay-sabay, nagbibigay din ang CDPH ng mga ekonomikal na solusyon para sa mga mamimili na may dami. Ito ay nangangahulugan na may diskwentong 50% bawat bahay, mas malaki ang iyong matitipid. Anuman ang antas ng iyong pakikilahok sa merkado ng pabahay — kung ikaw man ay isang real estate investor na naghahanap ng mga bahay na ipa-flip, o isang developer na nagtatayo ng isang buong bagong komunidad nang isang beses lang — tinitiyak ng CDPH na mayroon silang eksaktong uri ng ari-arian na angkop sa iyo. Maraming mga benepisyo ang pagbili ng isang CDPH prefab na bahay. Ang aming mga bahay ay hindi lamang mataas ang kalidad at abot-kaya kundi lubhang matipid pa. Ang ibig sabihin nito ay maaari mong pagmamay-ari ang isang bagong bahay na sariling-sarili mo nang hindi ginagastos ang lahat ng iyong ekstrang pera. Bukod dito, gusto kong bigyang-diin na nagbibigay ang CDPH ng mga plano sa pagpopondo upang higit na mapadali ang pagbili ng produkto. Sa lahat ng mga bagay na ito, bakit ka pa maninirahan sa ibang lugar sa isang bahay? Ang pagbili bilang isang tagahatid ng mga bahay na pre-fab mula sa CDPH ay nagbubukas sa iyo sa modernong disenyo. Ang aming mga bahay ay malinis, moderno, at perpekto para sa taong naghahanap ng isang kontemporaryong tahanan. Hanapin ang isang bahay na may lahat ng mga katangian at benepisyong gusto mo — sa presyong abot-kaya para sa iyo. Samantalahin ang mga alok na ito at bumili na ng iyong pre-fabricated na bahay sa CDPH ngayon! Pinapanatiling simple at maayos ang proseso ng pagbili ng mga pre-fab na bahay sa CDPH. Kaya't sa halip na pumunta sa ibang lugar matapos ang iyong pagreretiro o lumipat sa isang apartment na inuupahan sa lungsod, pinapadali ng House8080 na mag-online, mag-browse, at ‘mag-order’ ng bahay mismo sa lugar kung saan ka nakaupo. Ibig sabihin, wala nang paulit-ulit na pagpunta sa mga dealer o biglaang balita na dapat mong turuan ang iyong bagong bahay sa loob ng 2 linggo. Tiyak na sa CDPH, mararanasan mo ang ginhawa at kadalian sa pagbili ng mga pre-fab na bahay na on sale online. Kung ikaw ay isang developer o mamumuhunan sa real estate na nagnanais itaas ang antas ng iyong negosyo, suportado ka ng CDPH. Nagbebenta kami ng malawak na iba't ibang uri ng mga bahay na gawa sa pabrika na angkop para sa mga naghahanap ng komportable at abot-kaya nilalukuan. Hindi mahalaga kung ikaw ay nagpapaunlad ng bagong subdivision o nagbe-benta ng mga bahay: may solusyon ang CDPH para sa iyo. Ang presyo ng CDPH laban sa kalidad, kasama ang sariwa at eksklusibong wholesale offer, ay ang pinakamainam na pagpipilian. Ang bahay na madaling i-folding ay batay sa mga prefab na bahay para ibenta ng tradisyonal na bahay, na maaaring idisenyo ayon sa iyong mga kahilingan, maisagawa nang masaganang produksyon, at gawing mas ligtas, matatag, at protektado ang iyong kapaligiran sa paninirahan. Ang kuwarto ay maaaring gamitin sa paraan na kayang tugunan ang iba't ibang pangangailangan, nangangahulugan ito na maaari kang maginhawang manirahan kahit saan at kahit kailan. Mabilis na pagpapadala! Mabilis din ang pagpapacking at pagpapadala, dahil gumagamit kami ng mga propesyonal sa aming pambabalot na staff, na sumusunod sa iyong mga kahilingan sa pagbubundle ng folding room at tinitiyak na makakatanggap ka ng produkto ng pinakamataas na kalidad. Babantayan namin ang bawat hakbang ng proseso ng pagpapadala upang tiyakin na ligtas at maayos na makakarating ang iyong mga produkto sa destinasyon. Ang natatabing bahay ay maaaring itayo nang walang welding sa lugar, at nagbibigay kami ng mga tagubilin sa pag-install upang mapabilis at mapadali ang proseso. Kung susundin mo ang mga hakbang sa mga tagubilin, magagawa mong madali ang pag-install ng bahay na madaling i-fold. mga prefabrikadong bahay para sa benta, lumikha ng mas ligtas na espasyo para sa pamumuhay at mas komportable! Gumagamit kami ng pamantayang modular na disenyo na kasama ang lahat ng istruktural na bahagi. Lahat ng ito ay mga pamantayan na bahagi na ginawa sa pabrika. Pumili ng tamang sukat at layout upang maitayo mo ang iyong espasyo para sa pamumuhay ayon sa iyong mga pangangailangan. Ayon sa kanilang mga pangangailangan at kagustuhan, ang iba't ibang mga module ay maaaring pagsamahin upang makabuo ng iba't ibang layout ng kuwarto upang makamit ang multi-functional na integrated na espasyo para sa pamumuhay tulad ng living room, kusina, at silid-tulugan. Ang pinakamahalagang aspeto ay ang aming container house ay madaling i-disassemble at i-assemble, may matibay na istruktura, at may mahusay na pagganap—tulad ng waterproof, moisture-proof, at fire-proof—habang ang proseso ng assembly ay simple at madaling pangasiwaan, at hindi nangangailangan ng anumang espesyal na teknikal na kaalaman. Ang aming mga prefabricated na container house ay itinatayo upang tumugma sa iyong mga kinakailangan, kung ito man ay para sa pribadong tirahan, opisina para sa pansamantalang gamit, imbakan, o anumang iba pang layunin. Ngayon na ang panahon para makakuha ng isang container room at makakinabang sa mas murang presyo at sa maingat na serbisyo sa customer. Madadaliin mo ang iyong buhay sa pamamagitan ng pagbili ng isang container room! mga prefabrikadong bahay para sa pagbebenta, natatanging hugis, magandang anyo, nagpapaganda at nagpapakilala sa iyong tahanan. Mula sa simpleng moderno hanggang vintage, nag-ooffer kami ng iba't ibang istilo at kulay na angkop sa iyong panlasa at kagustuhan. Ang Beijing Chengdong ay nakatuon sa mga pangangailangan ng mga gumagamit at maaaring i-customize upang tugunan ang iyong tiyak na kailangan. Maaari mong idisenyo ang iyong pangarap na tahanan sa pamamagitan ng pagbabago sa layout, distribusyon ng tubig at kuryente, hugis, at iba pang katangian batay sa iyong personal na kagustuhan. Ang pagprefabrikado ng mga linya ng kuryente at tubig ay tumutulong sa amin na maiwasan ang mahabang proseso ng pag-aayos muli ng mga tubo kapag na-decorate na ang bahay, na nagpapataas ng kalidad at kahusayan ng dekorasyon. Nag-ooffer kami ng malawak na hanay ng mga opsyon para sa interior layout na kasama ang living room, dining room, bedroom, kitchen, bathroom, atbp. Maaari mong piliin ang mga ito batay sa iyong kagustuhan at panlasa upang lumikha ng isang ideal at natatanging tahanan para sa iyo. Apple House – Kalidad ng pamumuhay sa pinakamataas na antas! Ang Apple House ay isang natatanging lugar! Ang pre-fabricated na bahay ay gumagamit ng espesyal na disenyo para sa kahusayan ng istruktura at nakakapagbigay ng mabuting pagganap laban sa lindol upang matiyak ang kaligtasan. Ang modular na disenyo ay madaling ilipat, at ang pag-install ay maaaring i-adapt batay sa iyong personal na panlasa sa iba't ibang disenyo, istilo, at uri ng kuwarto. Lahat ng mga bahagi ay pre-fabricated at madaling ilagay sa tamang posisyon nang walang pangangailangan ng anumang espesyal na kasanayan. Kung ito man ay para sa opisina, tirahan, imbakan, o anumang iba pang sitwasyon, ang pre-fabricated na bahay ay kayang tugunan ang iyong mga pangangailangan. Nakakagulat na anyo, malalapat na guhit, at ang kakayahang i-customize batay sa iyong personal na panlasa upang lumikha ng perpektong espasyo para sa pamumuhay. Pinakamahusay sa lahat, ang mga pre-fabricated na bahay ay hindi nangangailangan ng welding sa lugar, at nagbibigay kami ng mga instruksyon sa pag-install upang gawing mas madali at mas mabilis ang proseso ng pag-install. Tangkilikin ang pinakamahusay na buhay na maaari mong maranasan—pumili ng mga pre-fabricated na bahay na available para sa pagbenta. Ang CDPH ay nagmamaneho at nagbebenta ng iba't ibang uri ng modular na bahay, prefab na bahay at villa house. Ang malawak na saklaw ng mga produkto ay nagpapatakbo sa amin upang magbigay ngkoponente solusyon para sa bawat engineering camp.mga prefab na bahay pang-benta
Tuklasin ang mga benepisyo ng pagbili ng mga bahay na prefab para ibenta sa mapagkumpitensyang presyo

I-unlock ang mga eksklusibong alok sa modernong mga bahay na prefab para ibenta para sa mga mamimili na may dami

Maranasan ang k convenience at kahusayan sa pagbili ng mga bahay na prefab para ibenta online

Itaas ang antas ng iyong negosyo gamit ang aming malawak na seleksyon ng mga bahay na prefab para ibenta
Why choose CDPH
mga prefab na bahay pang-benta?
Mataas na kalidad na bahay na maaaring mag-fold
Mabuting Benta ng container house
Modern Style apple cabin
Bagong dating prefab house
Mga kaugnay na kategorya ng produkto
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan
27+ Taon Ng Kagandahang-loob
Pagtatayo ng Engineering Camp