…">
,需要通过父级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);
}
});
})();
Eén van de beste stappen die je kunt nemen om het uiterlijk en de prestaties van je auto te verbeteren, is overschakelen naar een nieuw set wielen. Het auto velgen kan een leuk en belonend proces zijn om de perfecte wielen voor je voertuig te kiezen. Beschikbaar in verschillende maten, kleuren en ontwerpen bij JC Whitney, weinig geven je de kans om je voertuig op een kosteneffectieve manier te personaliseren zoals koplampen. Veel automobiele liefhebbers verkiezen 20-inch wielen op hun voertuig. Deze YAOLILAI wielen zijn bijzonder populair omdat ze een gevoel van elegantie en stijl bieden, nog steeds subtiel zonder overdreven te zijn. Behalve dat deze de ruimte rond de wielhuizen perfect vullen, doen een set van fifteen52's een ideale baan volgens vorm en functie opties voor iedereen die zowel stijl als snelheid wil. 20 Inch Wiel Wereld - Een voor elke smaak Kijk eens naar de VMB9 wielen van Velgen Wheels, afgewerkt in verschillende kleuren - kies degene die het beste bij je auto past. Tegelijkertijd biedt de TSW Bathurst Wielrand DST Hybris technologie, wat betere prestaties biedt met afwerkingen in zwart of zilver om een sportief en stijlvol uiterlijk te creëren. Je krijgt niet alleen de vrijheid om wielen te kiezen die de juiste grootte en type hebben, maar er is nog nooit een tijd geweest waarin je persoonlijkheid op zo'n aanpasbare manier uitgedrukt kan worden via customisatie voor auto-enthousiasten! Van het kiezen van kleuren en afwerkingen, logo's enz., er zijn zoveel opties beschikbaar om een set velgen uniek te maken. Online autokledingwinkels bieden een perfect beursvriendelijke oplossing voor hen die goede kwaliteit wielen willen zonder er veel geld voor uit te geven. Je hoeft slechts door de recensies te lezen en een goede verkoper te kiezen; en meteen kun je ze tegen de beste prijs krijgen. Terwijl ze nog steeds een soortgelijke stijl behouden, zijn deze gegoten aluminiumwielen een betaalbare, lichte alternatief voor traditioneel aluminium. Het ervoor zorgen dat je wielen zo lang mogelijk goed uitzien kan helpen om hun levensduur te verlengen. Juiste reiniging is essentieel, omdat vuil en smerigheid de afwerking over tijd kunnen beschadigen. Vermijd het gebruik van agressieve schoonmakers, omdat deze de wielen kunnen beschadigen. Wielschermen of beschermende coatingsTerwijl beschermend folie voor wielen een geweldige uitvinding is, is dit mogelijk niet de meest betaalbare optie voor iemand met een budget of die geconfronteerd wordt met harde wegcondities. Dus, kortom, het verbeteren van de wielen is een eenvoudige en snelle manier om zowel het uiterlijk als de prestaties van je auto te verbeteren. Met dit in gedachten kun je er echter voor zorgen dat je wielen langer meegaan door ze slim uit te kiezen en er goed voor te zorgen. Geniet dus van de kans om je auto te herbeleven met een nieuwe set wielen en voel jezelf bold en fabulous op de weg! Naast het kiezen van de juiste grootte en type wielen van YAOLILAI, zijn er ontelbare ontwerpkansen om je auto af te maken. Vaak is een van de eenvoudigste manieren om je wielen een persoonlijke aanraking te geven een beetje op maat gemaakte afwerking, naast kleuraccenten en duurzaamheid: powder coating finish is ongetwijfeld populair vanwege weerstand tegen krassen/chips/UV-schade. Een tweekleurencombinatie of zelfs een meerkleurig schema met verschillende kleuren en texturen is ook perfect voor hen die zeker willen zijn dat ze opvallen. De auto wiel ven een billet middencap kan worden gemaakt om elk van dezelfde veiligheids- of bedrijfslogos en wielgrootte-informatie weer te geven, beschikbaar als sticker op de wielen, wat het nog een andere nette manier maakt om je eigen velgen uniek te laten lijken. Met deze methode kun je een aangepaste inscriptie of zelfs het logo van je merk rechtstreeks op het oppervlak van de wiel zetten, wat het erg uniek maakt en anders dan alle andere keuzes in externe uitvoering bij deze wielen. Hoewel niet iedereen zich kan permitteren om eindeloos hun auto bij te werken, zijn er bij YAOLILAI voldoende bronnen voor wat betreft hoge kwaliteit 20-inch wielen. Een nog effectievere strategie is om online bij autokledinggrossisten te winkelen, aangezien de meeste van hen agressieve prijzen bieden voor wielen/dekens. Zorg ervoor dat je de reviews leest voordat je koopt en controleert of je verkoper een goede reputatie heeft. Als dat zo is, kun je wat geld besparen door over te schakelen naar een gegoten aluminium wiel in plaats van het duurdere gelogde aluminium optie. Hoewel ze velgen en banden niet hetzelfde lage gewicht en elegante prestaties bieden als hun hogere tegenhangers, komen deze ook met een cache om bij minder dan de helft van de prijs te matchen. De voordelen en nadelen van verschillende wielmaten voor uw voertuig Samenvattend, dit is een zeer algemeen overzicht van de voordelen en nadelen ten opzichte van verschillende wielmaten: 16 inch wielen: Meestal de meest betaalbare optie, deze zijn eenvoudig en niet opvallend. Ze bieden echter waarschijnlijk niet hetzelfde niveau van prestaties of uiterlijk als grotere maten. 18-inch wielen: De staal kanten gouden middenweg in wiel diameter, deze bieden betere prestaties zonder te veel opzichtigheid en een basis die minder duur zal zijn om te vervangen als ze beschadigd raken. 20-inch wielen: De maat die vaak wordt beschouwd als de sweet spot voor iemand die er goed uit wil zien en comfortabel wil rijden met betrekking tot ritkwaliteit en handling. De prijzen zijn verre van economisch, maar ze hebben een goede balans tussen prestatie en aantrekkelijkheid. Nadat u wat geld heeft geïnvesteerd in een chique set velgen van 20 inch, is het belangrijk om de juiste stappen te volgen om ze op de juiste manier op te slaan, zodat uw nieuwe bling niet binnen enkele maanden dof wordt. Lees verder en ontdek wat professioneel advies om uw velgen strak te houden. Regelmatig wassen van de velgen: U vindt dit misschien vanzelfsprekend, maar regelmatig wassen van uw velgen is essentieel om ze vrij te houden van al het vuil/afzetting/remstof dat zich mettertijd in de afwerking kan boren. Vermijd agressieve reinigingsmiddelen: Gebruik milde zeep en water om uw velgen te reinigen, en geen agressieve middelen die eventueel de afwerking kunnen krassen. Als u in een gebied met ruw weer woont, overweeg dan het kopen van velgdekkingen of beschermende coatings die uw wielen tegen de winter en regen beschermen. Regelmatige controles: Kijk bij een routinecontrole naar alle aangepaste velgen wielen van uw paardentrailer op tekenen van slijtage of beschadiging. Vroegtijdige detectie kan voorkomen dat dit zich uitbreidt tot een ernstiger toestand. Wij bieden een verscheidenheid aan diensten die specifiek zijn afgestemd op de individuele behoeften van elke klant. Wij kunnen een set 20-inch velgen ontwerpen die volledig aansluit bij uw persoonlijke stijl, voorkeuren en specificaties. Wij hebben een competente, deskundige, vriendelijke en behulpzame serviceploeg voor 20-inch velgen die klanten ondersteunt. Of het nu gaat om advies vóór de aankoop of ondersteuning na de aankoop: wij bieden u altijd snelle en kwalitatief hoogwaardige service, zodat u zich geen zorgen hoeft te maken. Ons zeer gemotiveerde onderzoeks- en ontwikkelingsteam voor 20-inch velgen verkent voortdurend nieuwe materialen, technieken en ontwerpen. Wij kunnen snel inspelen op marktvraag en branchetrends en leveren onze klanten de meest innovatieve stalen velgproducten die het beste aansluiten bij uw behoeften. Wij hechten ons aan kwaliteitsnormen voor velgen van 20 inch. We volgen elke stap van het productieproces nauwlettend, te beginnen bij de selectie van grondstoffen. Elke stalen velg ondergaat meerdere inspectieprocessen om de sterkte, duurzaamheid en exacte afmetingen te waarborgen. Wij bieden een betrouwbare kwaliteitsgarantie.Neem onmiddellijk contact met me op als u problemen ondervindt!
20 inch velgen
Unieke ontwerpmogelijkheden voor je voertuig

Hoe kom je kwaliteitswielen tegen op een budget

Voordelen en nadelen van wielgrootte voor je voertuigen

Tips om uw velgen er nieuw uit te laten zien
Why choose YAOLILAI 20 inch velgen?
Gepersonaliseerde en aangepaste service:
Professionele klantenservice:
Innovatief R&D-team:
Strikte kwaliteitscontrole:
Kan je niet vinden wat je zoekt?
Vraag nu een offerte aan
Neem contact op met onze adviseurs voor meer beschikbare producten.Neem contact op