na ito ay ...">
,需要通过父级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);
}
});
})();
Ang Steel Truck Rims YAOLILAI para sa truck ay ideal para sa mga taong gustong mapabuti ang anyo at pagganap ng kanilang truck. Ang mga sintalon ng kotse mga ito ay gawa sa mataas kwalidad na bakal, na may kapangyarihan nitong maging malakas. Ang mga entusiasta ng off-road at mga taong kailangan magdala ng malalaking halaga ng bodega ay walang gamit dito, pero ang estilo ay napakapopular. Isa pang malaking benepisyo ng bakal na bilog ay ang kanilang lakas at katatagan. Ang bakal ay matatag at maaaring pangkalahatan lumaban sa mga sugat at butas nang hindi makakamit ang pinsala, sa ibigangibanganyonggawa. Iyon ang dahil kung bakit ang bakal ang pinakamahusay na pagpipilian kapag dating sa truck rims dahil ang mga truck ay madalas ginagamit para sa trabaho ng heavy-duty. Madalas nilang kinakitaan ang mga daanan na masama may bato, bump at iba pa, na maaaring magdulot ng pinsala sa normal na mga rim. Ang iba pang mabuting bagay tungkol sa tulakang-trak na gawa sa bakal ay sila'y nakaka-resist sa karos. Hindi madaling sugatan ng damo at kahit masama ang panahon, hindi madaling sugatan ang bakal at ang iyong mga tulakan ay magiging maganda sa isang mahabang panahon habang tumatagal ng maraming, maraming taon. Makakabeneficio ang may-ari ng trak na sumusubok sa lahat ng kondisyon ng panahon mula dito nang malaki. Resist sa karos para maiwasan ang maintenance at mas matagal na buhay na tulakan. Sinabi na, hindi lamang praktikal ang mga tulakang-bakal ng trak kundi maayos din itong makikita. Ang mga tulakang-bakal ng YAOLILAI ay may sikat na pilak na coating na iiwanan ang iyong trak sa pamamagitan ng kalakhan ng mga sasakyan sa daan. Kapag mayroon kang trak na offset rims maganda ang itsura, maaari mong magkaroon ng kapaki-pakinabang at mapagdamdaming makapagmaneho. Hindi inaasahan na lahat ay magiging mataas ang kalidad at matatag na disenyo ng tag o plaka, ngunit may maraming mga opsyon na sapat kung gusto mong ipakita ang isang tiyak na personalidad o simple lang ay mas magandang kasama ang iyong kotse. Ang mga steel truck rims namin ay pinapersonalisa upang siguradong magsasailalami sa iyong truck. Sila pakete ng sugat at buhos ay may pangkalahatang bolt pattern upang maging kompyable sa karamihan sa mga disenyo ng truck, nalilinaw ang pag-aalala sa kompyabiliti sa iyong sakay. Ang ibig sabihin, maaari mong ipasok ito nang madali at mabilis. Ang mga butas sa sentro ng barrel ay disenyo upang magbigay ng puwang para sa mas malalaking brake na kinakailangan para sa mas mabigat na truck. Ang parehong mga elemento ay nagbibigay ng mas ligtas at mas mahusay na paggamit, lalo na sa ilalim ng loob o labas ng pook. Bukod sa mabigat, ang mga steel truck rims ay mas mabuting maglinis ng init. Nag-init ang aluminum, kaya mas mahina ito sa pag-sasamyo ng init, kaya't mula sa pananaw ng kalidad, madaling lumabag sa karakter ang mga ito. Iyon wheel rims ibig sabihin, habang nagdidrive nang husto, mas kaunti ang panganib na mainit ang mga steel rims at kaya'y mas kaunti ang posibilidad na mawala o bumugbog o sumira sa ilalim ng tratamento ng init. Mahalaga itong aspeto kapag kinakailangan mong ipinilit ang kamay mo sa leeg ng iyong truck habang nag-o-off-road. Maraming mga benepisyo ang mga steel truck rims ngunit isa sa pinakamahalagang yon na mga rim ng trak maaari nilang tiisin maraming timbang nang walang anumang problema. Bilang materyales, malakas ang steel at madaling suportahan ang mga mabigat na load, kaya ginagamit ito para sa mga truck na kailangan magdala ng maraming bagay. Dinisenyo ang YAOLILAI steel rims para sa mataas na kapasidad ng timbang kasama ang malaking lakas at relihiyosidad. Iyon ibig sabihin maaari mong tiyakin na gagana sila nang maayos, pati na rin kung may mabigat na load sa likod ng iyong pickup truck. Mayroon kami ng isang kompetenteng, maitim na, mapanibago at maingat na opisyal na serbisyo para sa mga customer. Hindi importante kung kailangan mo ng konsulta bago bumili o serbisyo pagkatapos bumili, hahandahin namin ito nang mabilis at Steel truck rims, upang hindi ka magduda. Mula sa pagpili ng hilaw na materyales, sumusunod kami sa mahigpit na pamantayan ng kalidad at sinusubaybayan ang bawat hakbang ng proseso. Bawat bakal na singsing ay dumaan sa maraming proseso ng inspeksyon upang garantiyahan ang kanyang exceptional na lakas, tibay, at mga sukat ng mga gulong ng truck na yari sa bakal, na nagbibigay-daan sa iyo ng mataas na antas ng pananagutan sa kalidad. Nag-aalok kami ng iba't ibang serbisyo na espesyal na idinisenyo batay sa natatanging pangangailangan ng bawat customer. Maaari naming likhain ang mga singsing na sumasapat sa tiyak na mga kinakailangan ng iyong mga gulong ng truck na yari sa bakal, performance, at teknikal na mga spec. Mayroon kaming nakatuon at malikhaing R&D team na patuloy na nagsasaliksik ng bagong teknolohiya, materyales, at disenyo. Nakakatugon kami sa mga uso sa merkado at industriya tungkol sa mga gulong ng truck na yari sa bakal. Ito ang nagbibigay-daan sa amin na mag-alok sa iyo ng pinakaepektibong mga singsing na yari sa bakal upang tugunan ang inyong mga pangangailangan.Makipag-ugnayan sa akin kaagad kung may mga problema!
Bakal na mga rims para sa truck
Baguhin ang Estilo ng Iyong Truck gamit ang Steel Rims

Mas Malapit na Pagtingin

Bakit ang Steel Rims ay ang Pinakamainam na Pagpilian para sa mga Adventures ng Off-Roading

Paano Tumutulong ang Steel Truck Rims Sa Iyo Upang Mahandle ang Mga Baryaing Load Nang Lagi
Why choose YAOLILAI Bakal na mga rims para sa truck?
Profesyonang serbisyo sa customer:
Mahigpit na control sa kalidad:
Personalisadong at Custom na Serbisyo:
Makabagong Tim ng R&D:
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