rrotullave të makinave të rënda të përsosura për makinën tuaj mund të jetë një ...">
,需要通过父级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);
}
});
})();
Gjetja e Përfect Bordat e rrotullave të traktorit për mjetin tuaj mund të jetë një detyrë e vështirë. Ekzistojnë një numër i madh zgjedhjesh atje jashtë, por nuk janë krejt të barabarta. Ka disa konsiderata të rëndësishme që duhet bërë kur kërkoni rrotat më të mira 18 inç çeliku për makinën tuaj. Zgjedhja e Rrotës së Duhur 18 Inç Çeliku për Mjetin Tuaj Kur blini rrota 18 inç çeliku, dëshironi të siguroheni që do të zgjasin. Gjeni rrota të ndërtuara nga çelik i cilësisë së lartë, që të zgjasin në përdorim të përditshëm. Gjithashtu, kontrolloni peshën e rrotave pasi kjo mund të ndikojë në performancën e mjetit tuaj dhe në konsumin e karburantit. Është gjithashtu e nevojshme të konsideroni madhësinë e duhur të rrotës që përshtatet saktë dhe është e sigurt për funksionimin e mjetit. Fundi, por jo më pak i rëndësishëm, kontrollojeni dizajnin e rrotës dhe përputhshmërinë me stilin e mjetit tuaj. Përshkrim: Në YAOLILAI, krenohemi me zhvillimin e rrotave prej çeliku 18 inç që janë ndërtuar me precizion dhe për përdorim të gjatë. Të ndërtuara nga çelik i lartë cilësie, rrota jonë është e qëndrueshme dhe e fortë dhe mund të rezistojë kalimit të kohës edhe në rrugët e dobëta. Rrotat tona gjithashtu janë dizajnuar të jenë të lehta për performancë më të mirë dhe eficiencë më të madhe të karburantit. Ne ofrojmë një varietet të madh rrotash për t'u zgjedhur, si dhe shumë opsione që do të përmirësojnë pamjen dhe performancën e biçikletës suaj. Rrotat e çelikut YAOLILAI do të duken shumë mirë në mjetin tuaj! Kur flasim për rrotat prej eliku 18 inç, posedohen disa pyetje të shpeshta nga pronarët. Njëra nga problemet më të zakonshme është ndërrimi i korrudzimit dhe i thatës. (Shënim i veçantë për rrotat e çelikut: Ata do të ndryshojnë veçanërisht në vendet ku moti është i ashpër ose përdoret kripë në rrugë). Për ta zgjidhur këtë problem, duhet t'i pastrosh dhe të mbash rrotat me një agjent kundër korrudzimit rregullisht. Një problem tjetër që mund të lindë është që rrotat mund të përkulen ose të deformohen nga goditjet me bukur, etj. Në këto raste, rrotat duhet kontrolluar nga një teknik dhe zëvendësuar. Së fundi por jo më pak e rëndësishme, disa prej tyre mund të fillojnë të dridhen ose të vibrojnë gjatë instalimit, gjë që mund të jetë shkaktuar nga montim i pasaktë ose pa balancim të duhur. Për ta neutralizuar këtë, sigurohuni që një teknik profesionist t'i instalojë dhe t'i balancojë si duhet rrotat. Kur bëhet fjalë për rrota çeliku 18 inç, ka shumë arsye pse do të kishit nevojë për to në mjetin tuaj. Nga ana estetike, dukeshit më mirë. Rrotat 18 inç e bëjnë makinën të duken tërheqëse dhe me stil, gjë që është e pranueshme. Për më tepër, rrotat më të mëdha mund të ofrojnë një manipulim dhe stabilizim të përmirësuar në rrugë, veçanërisht kur ngasni me shpejtësi të lartë ose ktheheni në një kthesë. Rrotat çeliku janë të qëndrueshme dhe të mjaftueshme të forta për përdorim jashtë rrugës ose për pune të rënda. Më tej, një përditësim i rrotave 18-inç nga çelik mund të ngrisë vlerën e rivendosjes së makinës suaj dhe kështu të jetë irresistibil për më shumë blerës që i pëlqejnë karakteristikat dhe përfitimet shtesë. Prej rrotullave prej çeliku me diametër 18 inç, duke filluar nga zgjedhja e materialeve të para deri te produkti final, ne ndjekim standarde të ashpra cilësie dhe kontrollojmë secilën fazë të procesit të prodhimit. Çdo unazë prej çeliku i nënshtrohet proceseve të ndryshme të kontrollit për të siguruar cilësinë e lartë, qëndrueshmërinë dhe dimensionet e sakta. Ne ofrojmë garantinë e cilësisë së lartë. Ne ofrojmë një gamë shërbimesh të përshtatura sipas nevojave unike të secilit klient. Pavarësisht nga specifikimet tuaja, rrotullat prej çeliku me diametër 18 inç dhe pritjet tuaja për performancë, ne do të dizajnojmë unaza që plotësojnë pritjet individuale tuaja. Ekipi ynë i K&Z është i entuziazmuar, por edhe kreativ. Ata po eksplorojnë vazhdimisht teknologjitë, materialet dhe dizajnet e reja. Ne jemi në gjendje të përgjigjemi me shpejtësi ndaj trendeve të tregut dhe të industrisë për rrotat stërkulluese prej çeliku me diametër 18 inç. Kjo na lejon të ofrojmë klientëve yne unazat më efikase prej çeliku që plotësojnë nevojat tuaja. Kemi formuar një ekip shërbimi kompetent, entuziast dhe i kujdesshëm për klientët. Nëse kjo është një konsultim para blerjes ose rrota prej çeliku 18 inç pas blerjes, ne jemi në gjendje t'ju ofrojmë shërbim të shpejtë dhe profesional, në mënyrë që të mos keni asnjë shqetësim.Largohu marre kontakt me mua takimisht nëse u takon problemet!
18 incj gurthe çelakete
Si të zgjidhni rrotat e çelikut 18 inç të duhura për mjetin tuaj

Çfarë na dallon ne, rrotat e çelikut 18 inç, nga konkurrenca
Problemet e zakonshme me rrotat e çelikut 18 inç dhe si t'i zgjidhni ato

Përfitimet nga përmirësimi në rrota çeliku 18 inç
Why choose YAOLILAI 18 incj gurthe çelakete?
Kontroll Kaliteti Larg dhe Larg:
Servis personalizuar dhe porosi:
Ekip i inovativ në & D:
Servis klijent profesional:
Nuk po gjeni ç'po kërkonit?
Pyetni një Ofertë Tani
Largoni kontaktoni konsultantët tanë për produktë të tjera të disponueshme.LARGU NJE LARG