Точная гидравлическая цилиндр является специальным инструментом... ">
,需要通过父级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++) {
;(function (i) {
if (nodeChildList[i].nodeType !== 3) return
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '')
if (!limitRegLength(val)) return
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val])
return
}
})(i)
}
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()
break
}
/** 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()
break
}
/** 向上查找父节点 */
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')
// 回调函数
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)
}
})
})();
Привет! В этом блоге мы поговорим о гидравлический силовой агрегат как они играют ключевую роль в любой машине. Вы можете спросить: «Что это значит?» Позвольте мне объяснить это просто и подробно. Точная гидравлическая цилиндр является специальным инструментом, который включает движение с использованием жидкостной среды, такой как масло. Он чрезвычайно полезен, так как позволяет нам легко поднимать тяжелые объекты и позволяет машинам функционировать гораздо эффективнее, чем в прошлом. Huachen — это компания, которая производит эти цилиндры. В этой статье мы сделаем следующее: Поймем мощь этих цилиндров, их преимущества, их функциональность в различных сценариях и роль, которую они играют в работе различных машин. Давайте начнем с влияния высокого- гидравлический блок питания это очень мощные цилиндры, которые могут легко приводить в действие очень тяжелые нагрузки. Принцип их работы заключается в том, что они используют масло, которое течет через цилиндр, что делает подъем больших усилий для машины проще. Представьте это так: поднятие большого, тяжелого ящика своими руками. Сложно, правда? Но если бы у вас был гидравлический цилиндр, он помог бы вам поднять этот тяжелый ящик легко и без особых усилий. И именно поэтому они такие мощные! Итак, поговорим о преимуществах точных гидравлических цилиндров. Прежде всего, они экономят значительное количество времени, так как могут поднимать большие и тяжелые предметы гораздо быстрее, чем мы могли бы это сделать вручную. Эти цилиндры являются лучшим решением для подъема тяжелых объектов за короткое время. Во-вторых, они помогают обеспечивать безопасность при подъеме тяжелых предметов. Вместо того, чтобы бороться с гравитацией для подъема весов, наш гидравлический цилиндр выполняет большую часть работы по подъему. Это означает меньшую вероятность травм при подъеме. Третье - эти цилиндры могут уменьшить износ машин. Они обеспечивают то, что машины не перегружаются или не испытывают чрезмерного стресса, увеличивая срок службы и качество работы. Итак, как же работают точные гидравлические цилиндры на практике? На самом деле, вы могли даже видеть их в работе, не осознавая этого! Они используются в огромном количестве мест, таких как строительная техника, крупные суда, и один из них даже находится в лифте, которым мы поднимаемся и опускаемся по стенам здания. Гидравлические цилиндры – это именно те механизмы, которые очень усердно работают, чтобы выполнить задачу; например, когда вы видите большой кран, поднимающий что-то тяжелое, вы наблюдаете идеальный пример того, как гидравлический цилиндр прилагает усилия для выполнения своей работы. Эти цилиндры можно найти практически во всех видах тяжелого оборудования, которое вы можете себе представить, поэтому они крайне важны во многих отраслях. При облегчении перемещения тяжелых предметов гидравлические цилиндры обеспечивают значительную безопасность для людей, и именно поэтому они действительно работают. Представьте себе попытку построить какое-нибудь огромное здание без гидравлических цилиндров для помощи. Оба варианта заняли бы гораздо больше времени и создали бы гораздо больше рисков для рабочих. Гидравлические цилиндры делают работу гораздо быстрее и легче, с минимальным количеством несчастных случаев. Это означает, что проекты могут быть завершены вовремя или даже раньше срока, что хорошо для всех, от рабочих до тех, кому нужен этот объект. Итак, теперь давайте обсудим важность точных гидроцилиндров. Прежде всего, они упрощают, ускоряют и обеспечивают безопасность работы. Это способствует повышению производительности; то есть, позволяет выполнять больше работы за меньшее время. При использовании этих машин люди также более защищены, что снижает количество травм. Все это приводит к увеличению прибыльности компании, а следовательно, ко всем ключевым направлениям бизнеса! Во-вторых, они помогают сохранить технику, так как предотвращают перенапряжение, что экономит деньги в долгосрочной перспективе. Наконец, законы о безопасности часто требуют использования гидроцилиндров. Это делает их использование в тяжелой технике не только более безопасным, но и соответствующим закону. При увеличении более чем на двадцать лет промышленного опыта, Huachen стал надежным партнером для многих известных брендов в 150 странах. Мы предлагаем гидравлические решения огромному количеству компаний, включая снегоуборочное оборудование, погрузочно-разгрузочные работы, воздушные рабочие платформы, сельскохозяйственную технику, автомобильные подъемники, прицепы и грузовики, а также мусоровозы. Huachen посвящает себя предоставлению качественных решений всем нашим клиентам и помогает им стать успешными. HCIC планировала реконструировать свой Центр Huachen к 2020 году и оснастить его, а также создать единую команду из двадцати гидравлических инженеров. Это обновление позволяет нам предоставлять специально разработанные решения, соответствующие вашим предпочтениям. Мы надежный партнер по программе OEM и хотим пригласить наших клиентов познакомиться с нами поближе. Huachen имеет 3 завода, каждый с более чем 70 000 квадратных футов производственных цехов. Организация насчитывает примерно 1000 квалифицированных рабочих, оснащенных современным производственным оборудованием. Huachen подробно анализирует каждый элемент и отправляет всестороннее исследование потребителю до отгрузки. Мы ставим качество на каждом этапе производства, проводя тщательное тестирование мусора, производственных процессов и готовой продукции на мощность, напряжение и толщину хромового слоя. Мы вложили значительные средства в оценку оборудования и процедур, чтобы гарантировать поставку качественной продукции нашим клиентам.гидроцилиндры высокой точности
Преимущества точных гидроцилиндров
Точные гидроцилиндры в действии
Как точные гидроцилиндры обеспечивают результат
Почему точные гидроцилиндры являются необходимым инвестиционным решением
Why choose Huachen гидроцилиндры высокой точности?
Мы сотрудничаем с брендами по всему миру, предоставляя настраиваемые промышленные решения.
Профессиональный дизайн и возможности производства под маркой заказчика (OEM)
Современное производственное оборудование и строгие рабочие процессы
Предоставляются полные отчеты о тестировании и гарантия качества продукции.
Сопутствующие товарные категории
Не можете найти то, что ищете?
Запросить предложение сейчас
Свяжитесь с нашими консультантами для получения дополнительных товаров.