mga rim ng gulong ng truck para sa iyong sasakyan ay maaaring maging isang mahirap na gawain...">
,需要通过父级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);
}
});
})();
Paghahanap ng Tamang Mga bilog ng tsakong truck para sa iyong sasakyan ay maaaring maging mahirap na gawain. Marami ang mga opsyon doon, ngunit hindi lahat ay pantay-pantay. May ilang mahahalagang pagsasaalang-alang na dapat gawin kapag hinahanap ang pinakamahusay na 18-pulgadang bakal na gulong para sa iyong kotse. Pagpili ng Tamang 18 Inch na Bakal na Gulong Para sa Iyong Kotse Kapag bumibili ng 18 inch na bakal na gulong, gusto mong tiyakin na matibay at tatagal. Hanapin ang mga gulong na gawa sa de-kalidad na bakal upang tumagal sa pang-araw-araw na paggamit. Suriin din ang timbang ng mga gulong dahil maaaring maapektuhan nito ang performance at fuel economy ng iyong kotse. Kailangan ding isaalang-alang ang iba't ibang sukat ng gulong upang siguraduhing angkop at ligtas para sa pagganap ng sasakyan. Huli na lamang, suriin ang disenyo ng gulong at kung magmamatch ba ito sa istilo ng iyong kotse. Deskripsyon: Sa YAOLILAI, ipinagmamalaki namin ang pagbuo ng mga 18-pulgadang gulong na gawa sa asero na binuo nang may kawastuhan at para sa mahabang gamit. Gawa sa de-kalidad na asero, matibay at pangmatagalan ang aming gulong at kayang tumagal kahit sa mga daang maputik. Ang aming mga gulong ay dinisenyo ring magaan upang mapabuti ang pagganap at kahusayan sa pagkonsumo ng gasolina. Mayroon kaming iba't ibang uri ng Gulong na maaaring piliin at maraming opsyon na magpapaganda sa itsura at pagganap ng iyong Bisikleta. Magmumukha nang mahusay ang mga gulong na asero ng YAOLILAI sa iyong sasakyan! Pagdating sa 18-pulgadang bakal na gulong, may ilang karaniwang katanungan ang mga may-ari. Kalawang at Korosyon Isa sa pinakakaraniwang isyu ay kalawang at korosyon. (Tala sa Bakal na Gulong: Maaaring magkaroon ng kalawang lalo na sa mga lugar kung saan mainit ang panahon o ginagamit ang asin sa mga kalsada). Upang malutas ang problemang ito, dapat regular na linisin at patungan ng rust inhibitor ang mga gulong. Ang pangalawang problema ay maaaring mapaso o mapilat ang gulong dahil sa pagbangga sa mga butas sa kalsada, atbp. Sa mga ganitong kaso, kailangang suriin ng teknisyan at palitan ang mga gulong. Huli na, ngunit hindi bababa sa kahalagahan, maaari ring maranasan ng ilan ang pag-uga o pag-vibrate sa gulong na maaaring dulot ng hindi tamang pagkakabit o hindi balanseng pagsasaayos. Upang maiwasan ito, siguraduhing isinasagawa ng propesyonal na teknisyan ang pag-install at tama ang balancing ng mga gulong. Kapag dating sa 18-pulgadang bakal na gulong, maraming dahilan kung bakit mo gusto ito para sa iyong sasakyan. Sa anyo, mas maganda kang tingnan. Ang 18-pulgadang rim ay nagbibigay ng magandang at estilong hitsura sa kotse, at ito ay nakakaakit. Bukod dito, ang mas malaking gulong ay maaaring magdala ng mas mahusay na paghawak at katatagan sa kalsada, lalo na kapag nagmamaneho sa mataas na bilis o humaharap sa isang sulok. Ang mga bakal na gulong ay matibay at sapat na matibay para sa off-road o mabigat na gamit. Higit pa rito, ang upgrade na 18-pulgadang set ng bakal na gulong ay maaaring itaas ang halaga ng muling pagbebenta ng iyong kotse at kaya nakakaakit sa higit pang mga mamimili na gustong may karagdagang tampok at benepisyo. Mula sa 18 pulgadang mga gulong na yari sa bakal hanggang sa pagpili ng hilaw na materyales—mula sa pagpili ng hilaw na materyales hanggang sa panghuling produkto, sinusunod namin ang mahigpit na pamantayan sa kalidad at kinokontrol ang bawat yugto ng proseso ng produksyon. Bawat bakal na ring ay dinaanan ng iba’t ibang proseso ng inspeksyon upang matiyak ang mataas na kalidad, tibay, at eksaktong sukat nito. Ibinibigay namin ang garantiya ng mataas na kalidad. Nag-ooffer kami ng hanay ng mga serbisyo na nakaukulan batay sa natatanging pangangailangan ng bawat kliyente. Anuman ang iyong mga teknikal na saligan, mga 18 pulgadang gulong na yari sa bakal, at mga inaasahang katumpakan, ididisenyo namin ang mga ring na tutugon sa iyong personal na mga inaasahan. Ang aming koponan sa Pananaliksik at Pagsasagawa ay buong sigla at kreatibo. Patuloy nilang tinalakay ang mga bagong teknolohiya, materyales, at disenyo. Kakayahang tugunan namin ang pangangailangan para sa 18-inch na bakal na gulong batay sa mga uso sa merkado at industriya. Ito ang nagbibigay-daan sa amin na mag-alok sa inyo ng pinakaepektibong bakal na singsing na sumasapat sa inyong mga pangangailangan. Itinatag na namin ang isang kwalipikadong, entusiyastikong, at mapagmalasakit na koponan ng serbisyo para sa aming mga customer. Kung ito man ay isang konsultasyon bago ang pagbili o ang mga gulong na may sukat na 18 pulgada at gawa sa bakal pagkatapos ng pagbili, handa kaming magbigay sa iyo ng mabilis at propesyonal na serbisyo upang wala kang anumang alalahanin.Makipag-ugnayan sa akin kaagad kung may mga problema!
18 inch steel wheels
Paano pumili ng tamang 18 inch na bakal na gulong para sa iyong sasakyan

Ano ang nagtatakda sa aming 18 inch na bakal na gulong na naiiba sa mga kakompetensya
Karaniwang mga isyu sa 18 inch na bakal na gulong at kung paano ito masolusyunan

Ang mga benepisyo ng pag-upgrade sa 18 inch na bakal na gulong
Why choose YAOLILAI 18 inch steel wheels?
Mahigpit na control sa kalidad:
Personalisadong at Custom na Serbisyo:
Makabagong Tim ng R&D:
Profesyonang serbisyo sa customer:
Mga kaugnay na kategorya ng produkto
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan