">
,需要通过父级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);
}
});
})();
Kaya ngayon, gusto kong ibahagi sa inyo ang tungkol sa isang kapanapanabik na bagay, ito ay tinatawag na "hydraulic telescopic cylinder"! Napakahalaga ng makina na ito sa maraming trabaho at tumutulong upang gumana nang mas maayos ang mga bagay. Kilalanin natin kung paano ito gumagana at bakit ito napakahalaga. Ang hydraulic telescopic cylinder ... ay isang kahanga-hangang aparato, na gumagamit ng likido upang tulungan ang paggalaw ng mga bagay. Parang isang bayani na superhero na madaling makap push at pull ng mabibigat na bagay. Binubuo ito ng iba't ibang bahagi na maaaring hum slide paitaas at pababa, tulad ng sa isang teleskopyo. Habang pinapapasok ang likido sa cylinder, ito ay nagpapalabas ng presyon upang makagawa ng isang napakalakas na puwersa na sapat upang iangat o ilipat ang mabibigat na mga bagay. Ang telescoping hydraulic cylinder ay tunog na talagang kahanga-hanga sa trabaho. Ang isang tao ay hindi kasali, o di kaya ay hindi kasali sa pag-angat; kapag nais ng isang tao na iangat ang isang mabigat na bagay, pumupumpa siya ng likido (karaniwan ay langis) sa loob ng cylinder. Pinupuno ng likido itong puwang sa pagitan ng mga bahagi, at habang ginagawa nito, tinutulak nito ang mga ito palayo sa isa't isa, na nagreresulta sa isang matinding puwersa. Ang parehong puwersa ang nagpapahintulot sa kanila na iangat, ibaba, at ilipat ang mga mabibigat na bagay nang may kaunting hirap. Parang may isang braso ni Superman na gumagawa ng lahat ng mabibigat na trabaho para sa iyo. Mayroong maraming mga benepisyo sa paggamit ng hydraulic telescopic cylinder. Ito ay maaaring paraan upang mapabilis, mapadali, at marahil kahit mapabuti pa ang paggawa ng mga gawain. Ang mga piston na ito ay kayang iangat ang mabibigat na bagay, kaya't nagpapataas ng kaligtasan ng mga manggagawa sa paglilipat ng mga bagay. Maaari rin silang maging napakatumpak, kaya't kayang-kaya nilang gawin ang mga delikadong gawain. At mahuhusay at matibay sila — kaya kaya nilang harapin ang mga matitigas na trabaho. Sa kabuuan, ang paggamit ng hydraulic telescopic cylinder ay nagbibigay-daan sa mga negosyo na makinabang mula sa mas mataas na produktibidad at mas epektibong paggawa nang regular, habang nagse-save ng oras at pera. hydraulic telescopic cylinder Katulad ng karamihan sa ibang makina, kailangan din ng hydraulic telescopic cylinder ng kaunting pangangalaga upang patuloy itong maayos na gumana. Ang pagtsek para sa mga pagtagas, paglilinis sa silindro at pagpapalit ng mga lumang bahagi ay makatutulong upang dumami ang haba ng buhay nito. Kung napapansin mong may mali, tulad ng mabagal na pagbubukas o pagsarado at kakaibang ingay, agad itong tugunan. Maaari itong makatulong upang maiwasan ang mas malubhang problema sa hinaharap at mapanatili ang maayos at epektibong pagpapaandar ng silindro. Ang mga hydraulic telescopic cylinders ay may iba't ibang hugis at sukat para sa iba't ibang trabaho. Ang iba ay maliit, perpekto para sa masikip na espasyo o magaan na karga. Ang iba naman ay malaki at makapal, na kayang iangat ang mabibigat na makina. Mayroon ding iba't ibang configuration, tulad ng single-acting cylinders na nagtutulak lang sa isang direksyon, o double-acting cylinders na kayang tumulak at umunat. Dahil sa maraming opsyon na mapagpipilian, siguradong makakahanap ka ng hydraulic telescopic cylinder na angkop sa trabahong gagawin. Si Huachen ay isang maaasahang kasamahan ng mga kilalang brand sa humigit-kumulang 150 bansa. Gamit ang higit sa dalawang dekada ng eksperto, maaaring ipakita ng Huachen ang isang malawak na dami ng o kaalaman. Inaasahan namin na magbigay ng hidraulikong solusyon sa madaling uri ng industriya, kabilang ang pagproseso ng materyales, kagamitan para sa baha, ari-arian na pang-trabaho, agrikultura, auto lifts, dyip at trailer, at basurang dyip at rehiyong pang-basura. Nagbibigay ng Huachen ng propesyonal na solusyon sa bawat customer upang tulungan silang makamit ang kanilang tagumpay. Ang HCIC ay mayroon nang baguhin muli ang kanyang Huachen Center sa pamamagitan ng 2020 at equip ito kasama ang pinagkaisang koponan na binubuo ng dalawampu hidrauliko na mga inhinyero. Ang upgrade na ito ay nagpapahintulot sa amin na magbigay ng espesyal na solusyon na espesyal para sa iyong mga espesipikong paborito. Kami ay matatag na partner sa OEM at gusto naming ipatawag sa aming mga cliente na bisitahin kami. Nakabenta ang Huachen ng tatlong pabrika na may higit sa 70,000 metro kuwadrado ng mga produksyon workshop. Nagtatrabaho ito ng higit sa 1000 mahihirap na manggagawa na mayroon ng maaaring ang pinakamarami sa produksyon equipment na moderno. Sinusuri ng Huachen bawat produkto nang mahigpit at ipinapadala ang ulat na detalyado sa kliyente bago ang pagpapadala. Ang kalidad ay ang pangunahing prioridad namin sa lahat ng fase ng produksyon sa pamamagitan ng seryoso na pagsusuri ng mga row materials, working procedures, at tapos na produkto para sa lakas, stress, at ang kapaligiran ng chrome layer. Sa kasalukuyan, nag-invest kami ng marami sa testing equipment at operasyon upang siguruhin na ibibigay namin ang mataas na kalidad na produkto at serbisyo sa aming mga supplier.cilindro teleskopiko hidrauliko
Pag-unawa sa functionality ng hydraulic telescopic cylinder

Ang mga benepisyo ng paggamit ng hydraulic telescopic cylinder sa mga industriyal na aplikasyon

Paano mapapanatili at malulutasan ang problema ng hydraulic telescopic cylinder

Pagsisiyasat sa iba't ibang sukat at disenyo ng hydraulic telescopic cylinders
Why choose Huachen cilindro teleskopiko hidrauliko?
Kumakollabo kami sa mga brand sa buong mundo, nagpapakita ng espesyal na industriyal na solusyon.
Profesyonal na disenyo at OEM manufacturing kakayahan
Mga pinakabagong kagamitan ng produksyon at matalinghagang mga proseso sa paggawa
Binibigay ang komprehensibong mga ulat ng pagsusuri at garantiya ng kalidad ng produkto.
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.