:
Kung...">
,需要通过父级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);
}
});
})();
Ipaglaban ang Buong Potensyal ng Iyong Sasakyan gamit ang 16-inch na Mga bilog ng tsakong truck : Kung gusto mong mukhang cool ang iyong sasakyan, alam mo na ang mga gulong ay isa sa pinakasikat na upgrade na maaari mong gawin. Ang aming mataas na kalidad na rim ay ginawa upang bigyan ang iyong kotse ng magandang itsura at manatili sa iyong sasakyan nang matagal. Sa malawak na pagpipilian ng mga disenyo, huling pagkakabuo (finishes), at kulay, maaari mong ipakita ang iyong sariling istilo sa iyong sasakyan, habang pinoprotektahan din ang iyong investisyon. Mula sa klasikong chrome hanggang sa itim at sa bawat kulay sa pagitan nito, mayroon kami ng custom na 16-inch na rim na hinahanap mo upang i-highlight ang iyong sasakyan at gawin kang natatangi sa kalsada. Sa isang mundo kung saan ang lahat ay nangyayari sa bilis ng liwanag, napakahalaga na manatili kang isang hakbang na una sa iyong mga kakompetisyon. Sa pamamagitan ng mga pasadyang gulong na may sukat na 16 pulgada para sa iyong sasakyan mula sa YAOLILAI, maaari kang gumawa ng malakas na pahayag at tumitindig nang mag-isa sa gitna ng karamihan. Ang aming mga gulong ay hindi lamang anyo ng bagong istilo kundi dinisenyo rin para sa pinakamataas na pagganap, na nagdudulot ng maraming benepisyo sa mga gulong—ginagawang ang LoBox ang tamang pagpipilian kapag kailangan mong magmukhang nakikilala sa daan. Kung naghahanap ka man ng kompetisyon o kung kailangan mo lamang ng isang sasakyan para sa pang-araw-araw na pagbiyahe sa lungsod, ang mga pasadyang gulong na may sukat na 16 pulgada ay tutulong sa iyo na makipagpaligsahan patungo sa bandila habang kasabay nito ay itinaas ka rin sa podium. Kapag pumipili ka ng pasadyang 16-inch na rim mula sa YAOLILAI, hindi ka lamang kumuha ng karaniwang rim—kundi isang natatanging, pasadyang gawa na rim na hindi mo na makikita sa ibang sasakyan. Mula sa natatanging mga disenyo hanggang sa napakadetalyadong mga detalye, ang aming 16-inch na gulong ay babaguhin ang iyong sasakyan bilang isang nakakaakit na highlight sa anumang kumpol ng mga sasakyan. Ang aming natatanging disenyo ng rim ay ang tanging magaan at mataas na performans na rim na available na may kasamang datos mula sa pagsusuri gamit ang finite element analysis para sa mga spoke at buong gulong. Ngayon, kasama na ang YAOLILAI, maaari mong idagdag ang bagong istilo sa iyong mga sasakyan gamit ang pinakabagong mga disenyo ng gulong na talagang nakakapanindig sa paningin. Ang kalidad ay talagang mahalaga kapag ang paksa ay pagpapaganda sa iyong sasakyan. Kaya naman, kami sa YAOLILAI ang nag-aalok ng pinakamahusay na pasadyang 16-inch na rims sa merkado. Ang aming mga rims ay bunga ng eksaktong inhinyeriya at ginawa gamit ang mataas na kalidad na materyales, napapanahong teknolohiya, at ilang dekada ng pagsasaliksik at pag-unlad—na nagbibigay ng napakahusay na pagganap kasama ang mapangahas na istilo. Kung kailangan mo ng mas mabuting pagkontrol para sa iyong kotse o kung gusto mo lamang ng bagong itsura, ang aming 16-inch na pasadyang rims ay maaaring eksaktong kailangan mo. Ipinakikilala ng YAOLILAI sa iyo ang isang bagong pagkakataon kasama ang aming premium na rims! Ang aming RD team ay bukas-palad at malikhain. Patuloy silang nagsusuri ng mga bagong teknolohiya, materyales at disenyo. Kakayahan naming tugunan ang mga pasadyang gilid ng gulong na may sukat na 16 pulgada batay sa kasalukuyang trend ng merkado at industriya. Dahil dito, maaari naming ipagkaloob sa iyo ang pinakaepektibong mga singsing na bakal na sumasapat sa iyong mga pangangailangan. Nauunawaan namin na ang bawat pangangailangan ng customer ay natatangi—kaya't nag-aalok kami ng malawak na hanay ng mga personalisadong serbisyo. Anuman ang iyong mga teknikal na tatakda, istilo at pangangailangan sa pagganap, kakayanin naming idisenyo ang mga singsing na sumasapat sa iyong sariling kahilingan. Ang aming tauhan sa serbisyo ng pasadyang gilid ng gulong na may sukat na 16 pulgada ay may karanasan, propesyonal at mapagmalasakit. Maaari naming ibigay sa iyo ang mga serbisyo nang maaga at may kalidad—maging bago man o pagkatapos ng pagbili. Sumusunod kami sa pinakamahigpit na mga pamantayan sa kalidad. Kinukontrol din namin nang maingat ang bawat yugto ng proseso ng produksyon, mula sa pagpili ng hilaw na materyales. Ang mga singsing na bakal ay kinukuhaan ng inspeksyon para sa Custom 16 inch rims upang matiyak ang kanilang lakas, tibay, at tiyak na mga sukat.Makipag-ugnayan sa akin kaagad kung may mga problema!
Custom 16 inch rims
Kung naghahanap ka ng paraan para i-upgrade ang iyong sasakyan nang hindi mo kailangang mag-utang, ang mga custom na gulong na 16 pulgada mula sa YAOLILAI ay ang perpektong opsyon. Ang mga premium na rim na ito ay hindi lamang para sa palabas—magpapa-maximize din nila ang bilis at pagganap ng pagkontrol sa iyong sasakyan! Sa pamamagitan ng mga custom na gulong na 16 pulgada, pinipili mo ang pag-abot sa buong potensyal ng iyong kotse, mula sa mas mahusay na grip hanggang sa mas maayos na biyahe. Kung ikaw ay isang taong sobrang nagmamahal sa kanyang mga kotse o kahit simpleng gustong magkaroon ng mas magandang karanasan sa pagmamaneho papunta at mula sa trabaho, ang mga custom na rim na 16 pulgada ay tunay na nagbabago ng laro.
Magdagdag ng Kaunting Galaw sa Iyong Biyahe Gamit ang Aming Mataas na Kalidad na 16" Rims:

Manatiling Nangunguna sa Iyong Kakompetensya Gamit ang Custom na 16 Inch Rims:

Hindi Karaniwang Estilo ng 16'' Rim na Hindi Makikita sa Iba Pang Brand:

Pabutihin ang Hitsura ng Iyong Sasakyan gamit ang Pinakamahusay na 16 Inch Rims sa Industriya:
Why choose YAOLILAI Custom 16 inch rims?
Makabagong Tim ng R&D:
Personalisadong at Custom na Serbisyo:
Profesyonang serbisyo sa customer:
Mahigpit na control sa kalidad:
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan