Kalpli tekerlekler çok sevimli ve aracınıza kişisel, sevgi dolu bir dokunuş kazandırır. Şirin kalp desenleriyle bu eşsiz jantlar harika...
">
,需要通过父级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);
}
});
})();
"Tekerleklerinize Bazı Kalpler Koyun": Bu aslında aracınız için iyi olabilir lol Tekerleklerdeki kalp motifleri çok sevimli ve arabanıza kişisel bir sevgi dokusu ekliyor. Sevimli kalp tasarımlarıyla bu benzersiz tekerlekler, arabalarına gerçekten bağlı olan kişiler için harika. Bu tamamen kapsamlı rehber, sizi kalpli tekerleklerle ilgili her şeyi öğretecek ve favori arabanızda nasıl kolayca elde edebileceğinizi gösterecek. Dolayısıyla, devam edin ve Arabanız İçin Nihai Kalp Tekerlekleri Rehberi'ne heyecan verici bir yolculuk başlatabilirsiniz! Kalp tekerlekleri, sürüşünüzde o özel bir şeyi ve onlarda olan sevgiyi eklemek için harika bir yoldur. Sadece aracınızın görünümünü benzersiz ve kişiselleştirilmiş hale getirebilirler, aynı zamanda tipik sürüş etiketi çerçevesindeki sınırlar içinde kişiliğinizin bir kısmını sergilemenizi de sağlayabilirler. Kalp tekerlekleri, herhangi bir tarzını tercih edebileceğiniz çeşitli tasarımlarla gelir bu nedenle güzel bir yaratıktır. Farklı paletler ve desenlerde kalp ilhamlı tasarlar yayg ortaklaşa görülür, çiçekler veya yıldızlar gibi daha karmaşık parçalar da tekerleklerinize dikkat çekici bir hayal gücü kazandırır. Romantik tekerlekler için birçok seçenek bulunur, eğer birisi mükemmel tasarım kalp tekerleği arıyorsa. En popüler modeller, genellikle iki bağlı kalbden oluşan ve 2 parçası arasındaki derin bağlantıyı temsil edenlardır. Bu güzel şekilde yapılmış jantlar, arabanızı daha da romantik hissettirmek için bir yol ve gerçekten bir sevgi ilahisidir. Sonra favorimiz, hediyenize benzersiz veya kişiselleştirilmiş bir his katarken kanatlı bir kalp. Ayrıca, modern bir tasarım için tekerin üzerine kalp şekli kesmenizi seçebilirsiniz, bu da aracınızın yeni bir parlatma bitimi verecektir. Eğer arabanıza stil eklemek ve biraz daha romantik bir hava vermek için kalp desenli tekerlekler takmayı düşünüyorsanız, burada size birkaç önemli ipucu ve ilham bulabilirsiniz. İlk olarak, tekerlek boyutuna bakın ve aracınızın güçlü bir duruş sunup sunduğundan emin olun. Diğer yandan, eğer arabanızın renk şemasına dikkat ediyorsanız, bununla uyumlu tekerlekleri seçerek daha koordine bir görünüm elde edersiniz. Diyelim ki arabanız ateş kırmızısı renkli, eşleşen kırmızı kalp tekerlekleriyle cesur ve tutarlı bir görünüşe sahip olursunuz. Araçınızı kalp tekerlekleriyle bezemek için başka bir yaratıcı yol, aracı'nın farklı bölümlerinde kalp etiketi veya yapıştırıcı kullanmaktır. Yan aynaların veya arkadan çarpana küçük bir kalp yapıştırıcı deseni romatik bezemelerinizle uyumlu bir şekilde harmonik bir dekorasyon yaratır. Kişiselleştirilmiş araba tekerlekleri alanında en son önde gelenler bunlardır; size trend olma ve farklılık yapma seçenekleri sunar, araçınıza biraz eğlence ve romantizm eklemenizi sağlar. Benzer şekilde, kalp tekerlekleri yanı sıra seçebileceğiniz diğer türden özel tekerlek tasarımları da sunulmaktadır. Spinner'lara ya da LED ışıklarına bayılırsanız, arabanızın tekerlekleri konusunda neredeyse sınırsız özelleştirme seçenekleri bulunmaktadır. Tasarlama hedeflerinize ne olursa olsun, burada araba ışığı montajı konusundaki uzmanları tercih etmelisiniz. Bu uzmanlar, aracı için en iyi tekerlekleri seçmek için size profesyonel tavsiye verebilir ve montaj ve görünüş gibi özelliklerle ilgili yardımcı olabilir. Araçiniz için mükemmel tekerlekleri seçmek sadece bir başlangıç ve özelleştirme konusunda diğer fırsatlar da var. Yeni özel boyaya, ilginç etiketlere veya hatta daha iyi bir emni sistemine koyarak, araba değiştirme konusunda birçok seçenek bulunur. Genel olarak, kalp şekilli tekerleklerin arabanızın görünümünde eğlenceli ve romantik bir dokunuş sağladığını düşünüyorum. Özel biri için sevginizi sergilemek isterseniz ya da aracıznın görünümünü geliştirmek istiyorsanız, kalp tekerlekleri harika bir seçenektir. Sevimli bu tekerlekleri kullanarak aracınız için neden biraz kalpten gelmezsiniz! Kalpli jant ekibimiz tutkulu ve hayal gücü zengini olup, sürekli olarak yeni teknolojileri, malzemeleri ve tasarımları keşfetmektedir. Böylece sektördeki ve piyasadaki gelişmelere hızlıca uyum sağlayabilmekteyiz. Bu da sizin gereksinimlerinizi karşılayacak en iyi çelik jantları sunmamızı sağlamaktadır. Her müşterinin benzersiz ihtiyaçlarına özel olarak tasarlanmış geniş bir hizmet yelpazesi sunuyoruz. Hangi kalpli jant modelini, tasarımını ve performans özelliklerini istediğinizi belirtirseniz, tam olarak kişisel gereksinimlerinize uygun bir jant tasarlayacağız. Müşteriler için yetkin, hevesli ve anlayışlı bir hizmet ekibi kurduk. Satın alma öncesi danışmanlık mı istiyorsunuz, yoksa satın alma sonrası kalpli jant desteği mi gerekiyor, her iki durumda da size endişe duymadan güvenebileceğiniz, hızlı ve profesyonel hizmet sunuyoruz. Ham madde seçimi aşamasından itibaren, süreçteki kalite ve kontrol standartlarına sıkı bir şekilde bağlı kalıyoruz. Her çelik halka, en yüksek dayanım, dayanıklılık ve kesin boyutlar sağlamak amacıyla birkaç kez denetlenir; böylece güvenilir kalite güvencesine sahip olursunuz.Eğer sorun çıkarsa hemen bana ulaşın!
kalp jantlar
Kendine Ait Seyahate Kalp Tekerlekleri Eklemek: Sevgi ve Karakter Ekleme

En İyi Romantik Tekerlekler: Her Meçhalede Aşk

Kalp Tekerlekleri Üzerinde Değerli İfadeler: Övgü ve İpuçları

Özel Araba Tekerlekleri Konusunda Yeni Moda: Stilinizi Yükseltin
Why choose YAOLILAI kalp jantlar?
Yenilikçi R&D Takımı:
Sahneleştirilmiş ve özel hizmet:
Uzman müşteri hizmetleri:
Katı kalite kontrolü:
Aramadığınız şeyi bulamıyor musunuz?
Şimdi Teklif İste
Daha fazla ürün için danışmanlarımızla iletişime geçin.İletişime Geçin