? Schaut bei ET Style vorbei ...">
,需要通过父级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);
}
});
})();
Hallo ihr Kinder! Wollt ihr CDPH auf einer Reise durch die zauberhafte Welt der einrichtungshäuser ? Entdecken Sie ET Styles Top-Fundstücke zum Einkaufen während der Walmart Big Save Days für Wohnaccessoires, Geräte, Möbel, Bettwäsche und Elektronik-Highlights – Prime Day. Betreten Sie unseren Einrichtungsladen und werfen Sie einen Blick auf unsere Auswahl an stilvollen wohndeko stücke. Wir haben alles, von gemütlichen Sofas und schönen Esstischen bis hin zu stilvollen Stühlen und coolen Couchtischen – alles, was Sie brauchen, um Ihr Haus wie ein Zuhause zu fühlen! Ob Schlafzimmer, Wohnzimmer oder Küche, CDPH bietet Ihre Designs und Trends. Worauf warten Sie noch? Entdecken Sie noch heute das perfekte Möbelstück, um Ihr Zuhause aufzuwerten! Unser nächster interessanter Punkt? Alle Dekorationsmöglichkeiten, die uns bei CDPH erwarten! Mit bunten Teppichen, atemberaubender Wandkunst, abwechslungsreicher Beleuchtung und ausgefallenen Accessoires ist hier alles vorhanden, um eurem Wohnzimmer die Persönlichkeit zu verleihen, die es verdient. Ob ihr eher modern oder bohemienhaft mögt oder ganz andere Richtungen bevorzugt – hier ist für jeden etwas dabei in unserem heimwerksmarkt . Steigen Sie ein und lassen Sie Ihrer Fantasie freien Lauf, während Sie unsere erstaunliche Kollektion an Haushaltsartikeln durchstöbern. Haben Sie Ihre Küchenschürze schon angelegt? Dann sollten Sie unbedingt die besten Geräte und Kochgeschirre von CDPH in Betracht ziehen. Wir bieten die küchen Geräte die Sie benötigen, um das Zuhause zu schaffen, das Sie verdienen – mit einem luxuriösen Kühlschrank, der mehr Platz bietet und eine einfache Übersicht ermöglicht, einem Herd, der Ihre Mahlzeiten bei gleichmäßigen Temperaturen schneller zubereitet, und einer Mikrowelle, die als All-in-One-Gourmetküche fungiert. Außerdem finden Sie bei uns hochwertige Kochsets, Backformen und Küchenhelfer, die die Zubereitung von einfachen Mahlzeiten zum Kinderspiel machen. Mit unseren erstklassigen Geräten und Kochutensilien sind Sie im Handumdrehen wieder in der Küche! Am Ende eines langen Tages, an dem Sie unsere Hauswaren durchstöbert haben, ist es Zeit, Erholung und Entspannung mit den Bett- und Badeartikeln von CDPH auf ein luxuriöses neues Niveau zu heben. Gönnen Sie sich ein neues Set weicher, kuscheliger Bettlaken, ein flauschiges Kissen und eine voluminöse Decke – dann fühlt sich Ihr Bett wie eine Wolke an. Und vergessen Sie nicht, sich selbst mit unseren luxuriösen Badetüchern, Morgenmänteln und Badeaccessoires zu verwöhnen, um Ihr Badezimmer in eine spaähnliche Oase zu verwandeln. Und mit unseren bett- und Badezubehör können Sie Ihr gesamtes Zuhause ausstatten. Zum Schluss werfen wir einen Blick in die Welt der High-Tech-Geräte und Accessoires bei CDPH. Ob Sie nach Smart-Home-Technologien, Haussicherheitssystemen, den neuesten elektronischen Küchengeräten oder den besten smarten Leuchten suchen – die aktuellsten intelligenten Geräte bieten für jeden endlose, coole Möglichkeiten. Ob Gaming, Musik, Fotografie oder einfach nur Dinge, die Ihnen helfen, die Zeit zu vertreiben: Wir haben die Ausrüstung, um Ihr Erlebnis zu Hause schneller, reibungsloser, angenehmer und produktiver zu machen. Schauen Sie sich daher unser hochtechnologisches Angebot an und bereiten Sie sich darauf vor, Ihr Zuhause auf die nächste Stufe zu heben! Das Fertighaus ist mit einer speziellen Konstruktionsausführung errichtet und weist eine gute Erdbebensicherheit auf, um die Sicherheit Ihres Zuhauses zu gewährleisten. Modularer Entwurf, einfach zu transportieren und zu installieren; zudem kann es nach Ihren persönlichen Vorlieben in verschiedenen Stilen und Raumtypen individuell angepasst werden. Alle Komponenten bestehen aus vorgefertigtem Material und lassen sich mühelos zusammenbauen – spezielle Fachkenntnisse sind nicht erforderlich. Ob als Wohnraum, Bürofläche, Lagerstätte oder für andere Zwecke genutzt: Fertighäuser erfüllen Ihre Anforderungen. Attraktives Erscheinungsbild, klare Linienführung sowie die Möglichkeit der individuellen Anpassung nach Ihren Wünschen ermöglichen die Schaffung eines einzigartigen Lebensraums. Besonders hervorzuheben ist, dass Fertighäuser nicht vor Ort verschweißt werden müssen; wir liefern zudem detaillierte Montageanleitungen, um die Installation zu vereinfachen und zu beschleunigen. Nutzen Sie die Vorteile eines komfortableren Lebens – entscheiden Sie sich für Chengdong-Fertighäuser. Das Falt-Haus wird in einem modularen Standard gefertigt, der sich flexibel an die Anforderungen Ihres Heimstores anpassen lässt. Dadurch ist eine Serienfertigung möglich, wodurch Ihr Haus sicherer, stabiler und zuverlässiger wird. Zudem kann der Raum flexibel kombiniert werden, um unterschiedlichen Nutzungsanforderungen gerecht zu werden – so genießen Sie jederzeit und von überall aus ein komfortables Lebensgefühl. Schnelle Lieferung! Die Lieferung und Verpackung erfolgen äußerst zügig. Wir beschäftigen ein fachkundiges Verpackungsteam, das den Falt-Raum gemäß Ihren Vorgaben verpackt und sicherstellt, dass Sie das hochwertigste Produkt erhalten. Wir überwachen jeden Schritt des Lieferprozesses, um sicherzustellen, dass Ihre Artikel sicher am Zielort eintreffen. Es ist zudem die bequemste Option: Der Raum lässt sich mühelos falten und vor Ort ohne Schweißarbeiten aufstellen; wir liefern zudem detaillierte Montageanleitungen, um Ihre Installation einfacher und schneller zu gestalten. Wenn Sie unsere Anleitungen befolgen, ist der Aufbau des faltbaren Hauses kinderleicht. Apple Cabin, einzigartige Form, schönes Aussehen, macht Ihr Zuhause persönlicher. Von modern und einfach bis hin zu vintage – wir bieten eine Vielzahl von Stilen und Farben, die Ihren Geschmack und Bedürfnissen entsprechen. Beijing Chengdong konzentriert sich auf die Bedürfnisse der Nutzer und kann individuell angepasst werden, um Ihre speziellen Anforderungen zu erfüllen. Nach Ihren eigenen Vorlieben und Wünschen können Sie den Stil Ihres Hauses, die Raumaufteilung, Wasser- und Stromleitungen usw. anpassen, um das perfekte, einzigartige Zuhause für Sie zu schaffen. Die vorgefertigten elektrischen und wasserführenden Leitungen ermöglichen es uns, den zeitaufwändigen Prozess des Rohrwechsels nach der Installation im Hauslager zu überspringen, was die Effizienz und Qualität der Inneneinrichtung erhöht. Sie können aus einer breiten Palette an Inneneinrichtungslösungen für Wohnbereich, Esszimmer, Schlafzimmer, Badezimmer, Küche und mehr wählen. Apple House – Lebensqualität auf die beste erdenkliche Weise! Entdecken Sie den einzigartigen Charme des Apple House! Wohn-Container, machen Sie Ihr Leben sicherer und komfortabler! Die Strukturkomponenten werden alle werksseitig vorgefertigt. Wenn Sie die passenden Maße, Konfiguration und Gestaltung wählen, können Sie Ihr Zuhause schnell errichten. Basierend auf den Bedürfnissen und Vorlieben des Kunden lassen sich verschiedene Module kombinieren, um unterschiedliche Raumlayouts wie Küche, Wohnbereich und Schlafzimmer zu schaffen. Entscheidend ist, dass der von uns verwendete Container einfach demontiert und montiert werden kann, über eine stabile Struktur verfügt und hervorragende Eigenschaften wie Wasserdichtigkeit, Feuchtigkeitsschutz und Brandschutz bietet. Der Montageprozess ist einfach und bedarf keiner technischen Fachkenntnisse. Ob für privates Wohnen, ein vorübergehendes Büro, Lagerung oder andere Anforderungen – die vorgefertigten Containerhäuser sind darauf ausgelegt, Ihren individuellen Bedarf zu erfüllen. Holen Sie sich noch heute einen Container-Raum und profitieren Sie von niedrigeren Kosten sowie einem zuvorkommenden Service. Verbessern Sie Ihre Lebensqualität! CDPH fertigt und verkauft verschiedene Arten von Modulhäusern, Vorfabrizierten Häusern und Villen. Ein breites Produktangebot sorgt dafür, dass wir für jedes Bauleiterlager eine passende Lösung anbieten können.Heimwerksmarkt
Entdecken Sie unsere große Auswahl an Wohnaccessoires.

Stöbern Sie in unseren hochwertigen Geräten und Kochgeschirren.

Kaufen Sie unsere luxuriösen Bettwäsche- und Badeartikel.

Entdecken Sie unsere Auswahl an High-Tech-Gadgets und Zubehör.
Why choose CDPH
Heimwerksmarkt?
Neuankömmling Vorfabrikationshaus
Hochwertiges Faltbaushaus
Modern Style Apple-Cabine
Gutes Verkaufscontainerhaus
Verwandte Produktkategorien
Nicht das gefunden, was Sie suchen?
Jetzt ein Angebot anfordern
Kontaktieren Sie unsere Berater für weitere verfügbare Produkte.Kontaktieren Sie uns
27+ Jahre Erfahrung
Bauleiterlagerbau