를 사용해 트럭의 외관을 한층 더 업그레이드할 수 있습니다...">
,需要通过父级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);
}
});
})();
트럭이 아늑하고 강력해 보이길 원하세요? 그렇다면 YAOLILAI를 사용하여 트럭의 외관을 더욱 개선할 수 있습니다. 트럭 휠과 타이어 이 림은 단순한 휠이 아닙니다. 이들은 당신의 트럭을 도로 위 다른 모든 트럭들 사이에서 돋보이게 만들고, 주변 사람들에게 인식되게 할 것입니다. 트럭 림을 선택할 때 기억해야 할 몇 가지 사항이 있습니다. 먼저 트럭의 크기와 무게를 고려해야 합니다. 중량 물품을 운반하는 트럭에는 중형 휠이 장착됩니다. 이러한 휠은 부서지거나 구부러지지 않고 트럭의 무게를 지탱해야 합니다. 바로 그 이유로 24.5인치 트럭 림은 중형 트럭과 매우 잘 어울립니다. 이들은 충분히 크기 때문에 트럭의 무게를 지탱하고 도로에서 균형을 유지시킵니다. 단순히 실용적이 뿐만 아니라, 트럭의 외관을 더 매끄럽고 현대적으로 만들어줍니다. 24.5 인치 트럭 휠 중 가장 뛰어난 점 중 하나는 매우 강하고 튼튼하다는 것입니다. 이는 YAOLILAI가 ... 트럭 림에 타이어 하루 종일 사용해도 견딜 수 있는 고품질 소재로 제작되어 트럭을 자주 사용하더라도 문제 없습니다. 또한 이러한 휠에는 다양한 스타일과 디자인이 있어 트럭 소유자로서 귀하의 스타일에 맞는 최고의 제품을 찾을 수 있습니다. 또 다른 뛰어난 특징은 24.5인치 휠이 트럭의 조작성을 개선시켜 준다는 것입니다. 즉, 트럭이 더 쉽게 회전하고 조작할 수 있으며, 도로를 더 잘 잡을 수 있다는 의미입니다. 이는 보다 부드럽고 안전한 주행을 가능하게 합니다. 24.5 인치 트럭 휠은 차량에 장착하면 주목받을 것입니다. 이 휠은 독특한 디자인으로 트럭의 강력함을 더욱 돋보이게 합니다. 이 휠은 매우 크기 때문에 쉽게 눈에 띄며, 다른 운전자나 지나가는 사람들에게 존중받고 싶어하는 우리를 만족시킵니다. 또한 이 휠들은 다양한 마감 처리로 제공됩니다. 선택할 수 있는 마감은 반짝이는 크롬, 제트 블랙 또는 트럭 색상과 조화를 이루는 매력적인 마감입니다. 이를 통해 항상 원하던 맞춤형 트럭 스타일을 완성할 수 있습니다. 24.5인치 휠 세트는 트럭의 성능을 향상시키는 데 도움이 될 수도 있습니다. 파운드로 돌아가자 친구, 이 휠은 더 많은 제동력을 제공할 수 있어 필요할 때 더 빠른 정지 속도를 의미합니다. 또한 트럭이 회전하는 방식에도 영향을 미쳐 결과적으로 더 효과적이고 편안해집니다. 취급성을 개선하는 것 외에도 이러한 초대형 휠은 구름 저항을 줄여 트럭이 더 자유롭게 굴러가도록 하고 연료를 절약하게 합니다. 그렇게 많은 배터리 용량을 갖추면 가스 충전 사이의 거리를 더 멀리 갈 수 있는 능력을 얻거나, 일부 경우에 따라 예정된 시간보다 더 일찍 가스 충전소에 들르지 않아도 됩니다. 그리고 더 큰 직경의 휠은 브레이크에 충분한 냉각 공기를 제공하여 사용 중 브레이크 고장을 최소화하기 위한 안전성 측면에서 매우 중요한 요소입니다. Yaolilai는 전문적인 트럭 휠 제조 회사입니다. 우리는 트럭의 외관뿐만 아니라 성능도 향상시킬 수 있는 휠 세트를 특화하고 있습니다. YAOLILAI 트럭 림 강한 소재로 만들어져 혹독한 주행 조건을 견딜 수 있도록 설계되었습니다. 우리는 무수히 많은 디자인과 마감 옵션을 제공하므로, 당신의 트럭에 완벽하게 맞는 것을 찾을 수 있을 것입니다. 또한 우리는 트럭의 성능과 연료 경제성을 최적화하기 위한 휠 세트도 제공합니다. 우리는 모든 24.5인치 트럭 림이 고유하다는 점을 인지하고 있으며, 맞춤형 서비스를 다양하게 제공합니다. 고객님께서 원하시는 사양, 스타일 또는 성능 요구사항에 관계없이, 귀하의 구체적인 요구사항을 충족시키기 위한 최적의 림을 설계해 드립니다. 24.5인치 트럭 림의 원자재 선정 과정에서는 품질에 대한 엄격한 기준을 준수하며, 제조 공정의 각 단계를 철저히 관리합니다. 강철로 제작된 림은 고강도, 내구성 및 정확한 치수를 보장하기 위해 다중 검사를 거칩니다. 우리는 24.5인치 트럭 림 전문 R&D 팀을 보유하고 있으며, 끊임없이 새로운 소재, 기술 및 디자인을 탐구하고 있습니다. 시장의 수요와 산업 동향에 신속히 대응하여, 고객님의 요구사항을 가장 잘 충족시키는 최신식 강철 림 제품을 공급해 드립니다. 당사의 고객 서비스 담당 직원은 경험이 풍부하고 전문적이며, 24.5인치 트럭 림을 전문으로 다룹니다. 구매 전 상담이 필요하든, 구매 후 애프터서비스가 필요하든 상관없습니다. 당사는 신속하고 신뢰할 수 있는 서비스를 제공하여 고객께서 안심하고 이용하실 수 있도록 지원합니다.문제가 생기면 즉시 연락해 주세요!
24.5 트럭 림
헤비 듀티 트럭에 가장 적합한 휠 선택하기.

24.5인치 트럭 림의 이점 알아보기.

트럭용 24.5인치 휠로 도로에서 주목받기.

24.5인치 휠 세트로 트럭 성능 업그레이드하기.
Why choose YAOLILAI 24.5 트럭 림?
맞춤형 서비스:
엄격한 품질 관리:
혁신적인 연구개발팀:
전문 고객 서비스:
원하는 내용을 찾지 못하셨나요?
지금 견적 요청하기
더 많은 이용 가능한 제품은 전문가와 상담해 주세요.문의하기