خانههای پیشساخته در دسترس هستند! این خانهها همچنین بسیار سریع و ...">
,需要通过父级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);
}
});
})();
به دنبال خانهای هستید که به راحتی قابل تهیه باشد و هزینه زیادی نداشته باشد؟ خوشبختانه، CDPH شما را پوشش میدهد — خانههای پیش ساخته در دسترس هستند! این خانهها همچنین بسیار مرتب هستند، چون ما لازم نیست آنها را بسازیم؛ این خانهها از قبل در وضعیت سالم وجود دارند و فقط کافی است مونتاژ شوند – مثل یک پازل! در ادامه ببینید چرا باید خرید خانههای پیش ساخته در دست فروش از CDPH را در نظر بگیرید. با خرید یک خانه پیشساخته از CDPH، مطمئن باشید که بالاترین کیفیت محصول را دریافت خواهید کرد. آنچه باید بگوییم این است که خانههای ما به بالاترین استانداردها ساخته شده و تنها با بهترین مواد ساخته میشوند. شما نیازی نخواهید داشت تا نگران مشکلات مداومی مانند افتادن قطعات یا تعمیرات پرهزینه باشید. علاوه بر این، CDPH طیف گستردهای از طرحها و سبکها دارد که میتوانید از میان آنها انتخاب کنید و خانه رویایی خود و خانوادهتان را محقق سازید. اگر قصد سفارش چندین خانه بهصورت همزمان را دارید، CDPH راهکارهای اقتصادی مناسبی برای خریداران عمده نیز ارائه میدهد. این بدان معناست که با تخفیف ۵۰ درصدی برای هر خانه، شما میتوانید پول بیشتری پسانداز کنید. هرچه سطح مشارکت شما در بازار مسکن باشد — آیا یک سرمایهگذار املاک هستید که قصد دارید خانهها را خرید و فروش کنید، یا یک توسعهدهنده که در یک مرحله قصد احداث یک جامعه کاملاً جدید را دارید — CDPH اطمینان حاصل کرده است که نوع دقیق ملک مورد نیاز شما را ارائه دهد. مزایای زیادی در خرید یک خانه پیشساخته CDPH وجود دارد. خانههای ما نه تنها از کیفیت بالا و قیمت مقرونبهصرفه برخوردارند، بلکه بسیار اقتصادی نیز هستند. این بدین معناست که شما میتوانید صاحب یک خانه کاملاً جدید شوید و در عین حال تمام پول اضافی خود را خرج نکنید. علاوه بر این، میخواهم تأکید کنم که CDPH طرحهای تأمین مالی ارائه میدهد که خرید محصول را آسانتر میکند. با تمام این مزایا، چرا باید جای دیگری و در یک خانه دیگر زندگی کنید؟ خرید به عنوان یک خریدار عمده از خانههای پیشساخته شما از CDPH به شما امکان میدهد تا به سمت طراحی مدرن گام بردارید. خانههای ما تمیز، مدرن و ایدهآل برای افرادی هستند که به دنبال یک خانه معاصر هستند. به دنبال خانهای باشید که تمام ویژگیها و مزایای مورد نظر شما را داشته باشد — با قیمتی که با بودجه شما سازگار است. از این فرصتهای ویژه استفاده کنید و همین امروز خانه پیشساخته خود را از CDPH خریداری کنید! ما در CDPH فرآیند خرید خانههای پیشساخته را ساده و روان نگه میداریم. بنابراین، به جای اینکه پس از بازنشستگی به جای دیگری بروید یا به یک آپارتمان اجارهای در شهر نقل مکان کنید، House8080 به شما امکان میدهد که به سادگی آنلاین وارد شوید، در وبسایت مرور کنید و دقیقاً از همان جایی که نشستهاید یک خانه سفارش دهید. این بدین معناست که دیگر نیازی به رفت و آمد بین فروشندگان نیست یا اینکه دو هفته قبل از تحویل خانه جدیدتان اخبار جدیدی منتشر نشود. به طور خاص، با CDPH شما از راحتی و سهولت خرید خانههای پیشساخته به صورت آنلاین بهرهمند میشوید. آیا شما یک توسعهدهنده یا سرمایهگذار املاک هستید که میخواهید کسبوکار خود را به سطح بالاتری ببرید؟ CDPH از شما حمایت میکند. ما انواع گستردهای از خانههای ساختهشده در کارخانه ارائه میدهیم که برای کسانی که به دنبال فضای زندگی راحت و مقرونبهصرفه هستند مناسب است. مهم نیست که آیا در حال توسعه یک منطقه جدید هستید یا خانهها را بازسازی و میفروشید: CDPH راهحل مناسب شما را دارد. قیمت CDPH در مقابل کیفیت بالا و پیشنهاد عمده منحصر به فرد و بدون نقص، بهترین انتخاب است. خانه تاشو بر اساس خانههای پیشساخته قابل فروش از نوع خانه سنتی است که میتوان آن را مطابق با نیازهای شما طراحی کرد، به تولید انبوه رساند و محیط زندگی شما را امنتر، پایدارتر و مطمئنتر نماید. این اتاق را میتوان به گونهای استفاده کرد که بتواند نیازهای مختلفی را پوشش دهد، بدین معنا که میتوانید در هر جایی و در هر زمانی به راحتی زندگی کنید. تحویل سریع! بستهبندی و حمل و نقل نیز سریع انجام میشود، زیرا ما از متخصصان مجرب در تیم بستهبندی خود استفاده میکنیم و مطابق با درخواست شما اتاق تاشو را بستهبندی میکنیم و اطمینان حاصل میکنیم که محصولی با کیفیت بالا دریافت خواهید کرد. ما هر مرحله از فرآیند تحویل را زیر نظر داریم تا مطمئن شویم که محصولات شما به مقصد بهصورت ایمن و بدون مشکل میرسند. ساخت خانه تاشو بدون جوشکاری در محل امکانپذیر است و ما دستورالعمل نصب را ارائه میدهیم تا فرآیند سریعتر و آسانتر شود. اگر مراحل موجود در دستورالعمل را دنبال کنید، میتوانید به راحتی نصب خانه تاشو را به پایان برسانید. خانههای پیشساخته برای فروش: فضای زندگی ایمنتر و راحتتری ایجاد کنید! ما از طراحی ماژولار استاندارد استفاده میکنیم که شامل تمامی اجزای سازهای میشود. تمامی این اجزا در کارخانه و بهصورت استاندارد ساخته میشوند. ابعاد و چیدمان مناسب را انتخاب کنید تا بتوانید فضای زندگی خود را دقیقاً مطابق با نیازهایتان بسازید. با توجه به نیازها و سلیقهی شما، ماژولهای مختلف را میتوان بهصورت ترکیبی برای ایجاد چیدمانهای متنوع اتاقها بهکار برد تا فضاهای زندگی چندکاره و یکپارچهای مانند نشیمن-room، آشپزخانه و اتاق خواب ایجاد شود. مهمترین ویژگی خانههای کانتینری ما، سادگی در فرآیند جمعآوری و بازنشانی همراه با سازهای محکم است؛ این خانهها عملکرد عالی دارند، از جمله مقاوم در برابر آب، رطوبت و حرارت، و فرآیند مونتاژ آنها ساده و آسان بوده و نیازی به دانش فنی خاصی ندارد. خانههای پیشساختهی کانتینری ما بهگونهای طراحی و ساخته شدهاند که دقیقاً مطابق با نیازهای شما باشند، چه برای مسکن شخصی، ادارههای موقت، انبارداری یا هر کاربرد دیگری. اکنون زمان مناسبی برای تهیهی یک اتاق کانتینری و استفاده از قیمت مقرونبهصرفهتر و خدمات مشتریان بسیار توجهکننده است. با خرید یک اتاق کانتینری، زندگی خود را آسانتر کنید! خانههای پیشساخته برای فروش، با شکل منحصربهفرد و ظاهری زیبا، که خانهی شما را شخصیتر میکند. از سبکهای مدرن ساده تا وینتیج، طیف گستردهای از سبکها و رنگها را ارائه میدهیم که با سلیقهی شما سازگار است. شرکت پکن چنگدونگ بر نیازهای کاربران تمرکز دارد و میتواند محصولات را بهصورت سفارشی برای برآوردن نیازهای خاص شما طراحی کند. شما میتوانید خانهی رویایی خود را با تغییر در چیدمان، توزیع لولهکشی آب و برق، شکل و سایر ویژگیها بر اساس سلیقهی شخصی خود طراحی کنید. پیشساختن خطوط برق و لولهکشی آب، ما را از فرآیند طولانی بازچیدمان لولهها پس از اتمام دکوراسیون خانه بینیاز میسازد و کیفیت و کارایی دکوراسیون را افزایش میدهد. ما طیف گستردهای از گزینههای چیدمان داخلی ارائه میدهیم که شامل اتاق نشیمن، اتاق غذاخوری، اتاق خواب، آشپزخانه، حمام و غیره میشود. شما میتوانید بر اساس سلیقهی خود این اجزا را انتخاب کنید تا خانهای ایدهآل و منحصربهفرد برای خود ایجاد نمایید. خانهی اپل — بالاترین سطح کیفیت زندگی! خانهی اپل یک منطقهی منحصربهفرد است! خانههای پیشساخته با طراحی ویژهای برای مقاومت سازهای اجرا شدهاند و عملکرد لرزهای خوبی دارند تا ایمنی را تضمین کنند. طراحی ماژولار آنها را بهراحتی قابل جابهجایی میسازد و نصب آنها میتواند مطابق ترجیحات شخصی شما از نظر طرحها، سبکها و انواع اتاقها تنظیم شود. تمامی اجزا پیشساخته هستند و نصب آنها ساده بوده و نیازی به مهارتهای تخصصی خاصی ندارد. چه برای اهداف اداری، مسکونی، انبارداری یا هر کاربرد دیگری در نظر گرفته شده باشد، خانههای پیشساخته میتوانند نیازهای شما را برآورده کنند. ظاهر شیک، خطوط نرم و امکان سفارشیسازی مطابق سلیقه شخصی شما، فضای زندگی ایدهآلی را خلق میکنند. بهترین نکته این است که خانههای پیشساخته نیازی به جوشکاری در محل ندارند و ما دستورالعملهای نصب را ارائه میدهیم تا نصب آنها برای شما آسانتر و سریعتر باشد. زندگی بهترین نوع زندگی ممکن را در پیش بگیرید و خانههای پیشساخته آماده فروش را انتخاب کنید. CDPH تولید و فروش انواع خانههای ماژولی، خانههای پیش ساخته و خانههای ویلا را انجام میدهد. دامنه گسترده محصولات ما به ما امکان میدهد برای هر اردوگاه مهندسی راهحل مناسبی ارائه دهیم.خانههای پیش ساخته برای فروش
مزایای خرید خانههای پیشساخته در دسترس با قیمتهای رقابتی را کشف کنید

دسترسی به فرصتهای انحصاری خرید عمده خانههای پیشساخته مدرن در دست فروش برای خریداران عمده

راحتی و کارایی خرید آنلاین خانههای پیشساخته در دست فروش را تجربه کنید

کسب و کار خود را با انتخاب گسترده ما از خانههای پیشساخته در دست فروش ارتقا دهید
Why choose CDPH
خانههای پیش ساخته برای فروش?
خانه پوشاکی با کیفیت بالا
خانه کانتینر فروش خوب
کابین مدرن اپل
خانه پیش ساخته جدید
دستهبندیهای محصولات مرتبط
چیزی که به دنبالش هستید پیدا نمیشود؟
همین حالا نقلقول درخواست کنید
برای اطلاع از محصولات بیشتر با مشاوران ما تماس بگیرید.با ما در تماس باشید
بیش از ۲۷ سال تجربه
ساخت اردوگاه مهندسی