An taediosus es tui machinamenta semper fallere et productivitatem tuam offendere? Vis scire instrumentum quod potest ... ">
,需要通过父级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)
}
})
})();
"Magis Cognoscere de unitate supportis screw ball – Instrumento Quod Meliores Facit Performance Machinarum Tuarum." An taediosus es tui machinae semper deficiendi et affectandi productivitatem tuam? Vis scire instrumentum quod potest meliorem et efficientius machinam tuam facere operari? Nequaquam ulterius quam Jingpeng unitas sustentationis helicis . L'unità di supporto per vite a palline è uno strumento progettato per impedire la rotazione delle vostre viti portatrici, il che aumenta significativamente l'accuratezza del movimento della vostra macchina. Riduce inoltre l'usura della macchina, rendendo Jingpeng Unitas Support efficientior. Praeterea, unitas supportiva screw rotundus quantitatem oneris in machina reducit, eius vitam prolongat et costus conservationis minuit. Hoc instrumentum est idoneum pro machinis quae praecisionem et exactitudinem requirunt, sicut machinae CNC, machinae scalpturae et torni. Unitas supportiva screw rotunda est productum innovationis allatae per progressum technologiae machinarum. Jingpeng globus rotam reparatio constituitur ex materialibus altissimae qualitatis, quod eius durabilitatem et longevitatem confirmat. Praeterea, eius designium est optimatum pro minima tolerantia, faciens ut plures mechanicae partes operentur accurate et coherenter. Quisque progressio in designio est examinata et meliorata, probans se consonare strictis normis fabri team. Unitas supportiva screw rotunda est una ex tutissimis instrumentis ad utendum cum machinis operandis. Jingpeng cnc fuso globulari tenendo ferramentam, positio feedback melioratur absque ulla retrorsa motus. Hoc est necessarium, quod tollit periculum accidentium, quae possunt causare damna machinis aut, etiam peius, personis. Ferramentum insuper cum mecanismo sui ipsius protectionis est constructum, praeventiens supercargos ut deterreat damna ex machina collisionibus. Uti support unit gyro sphaerico certificat machinas secure operari cum minimis periculis laesionum. Support unit gyro sphaerico facile est instalare et uti, faciens id instrumentum optime aptum his qui nullam priorem discentiam in operatione machinarum habent. Jingpeng nux tornus globi cum instructionibus venit quae monstrant quemadmodum instalare et uti eo, certificando te experiri beneficia quae affert in brevi tempore. Unitas insuper ad esse adaptabilis designata est, significans quod cum variis machinis operatur, minuens necessitatem uti diversis instrumentis. Jingpeng Machinaria fundata 2015, sedes eius in Shanghai, stabit filiam in Unione Europaea in Polonia 2022. Jingpeng Machinaria perseverabit ad profundius praesentiam in mundo. Decem annis post, YOSO nunc est plenitus integratus commercii et industriae platforma transmissionum mechanicarum cum proprio nomine commerciale et internationalibus patentibus. Jingpeng haesit ad stylum corporativum quod subliniat "qualitas marcae, servitium marcae" ab initio. Nomen YOSO nobis permitit participare in exhibitionibus internationalibus in hoc campo per annum. Qualitas est in corde longi temporis evolutionis YOSO. Servitium permittit clientibus fieri sociis unitatis supportis screw. Jingpeng Machinaria est dux in mercato emendi gearbox mechanicus pro Industria 4.0. Fides aedificatur per 10 annos producendi producta perfecta, 190 professionales ingenii qui exercent, 24 modernae linea productionis, 50,000m2 basis productionis. Quisque varietas transmissionis mechanicae diligenter electa methodis fabricationis. YOSO Devotus producere producta perfecta. Unitas supportis YOSO ball screw perita est omnium generum transmissionum mechanicarum. Massiva, recens constructa linea productiva CNC sex metrorum praebet singulas railes ducentes rotandas sexti metri in productionibus. Maximus mensura railis centum viginti quinque est. Railes inveniri possunt in toto spectro viginti quinque, triginta, tricesimum quinque, quinquaginta quinque, sexaginta quinque, octoginta quinque, centum, centum viginti quinque. Singulus glissorium sustinet pondus maximum centum nonaginta duo tonnellae. Basis productio screw utilisatur in conficiendis batch habet minimum Ph6mm et progressum unum millimetrum et maximum Ph245mm, longitudo screw usque decem metra et onus dynamicum maximum centum viginti quinque tonnellae. Praebet biduum C1 level, triennium C2 level batches, pentium C3 level, decem metra C5 level varias pares ball screw. YOSO Motion, optimus socius systematum linearium. Simul laborabimus ut industriae 4.0 subveniamus. Refutamus notiones de 'Made in China'. Solutio integratio multiproductus YOSO, Praebet componentes transmissionis integrae quae possunt adquiri in uno loco ut satisfaciat requisitis clientibus nostris. Sumus determinati adiuvare clientes ut fiant competitivi in mercato praebendo solutiones altius qualitatis in fabricando, efficientia etiam ac facultates unitatis supportis ball screw marcae productique qualitatis.offer gamma productiva selectionem latam performance superioris quaestu meriti fiduciam mercati propter intellectum profundum requirementum customer.Partneres per orbem stabiliunt relationes propiores cum YOSO, strategia internationalization permitit marcae YOSO attingere clientes in regionibus suis per rete globale. Si velis involvi et esse pars marcae YOSO, quaeso me contices! Marca: 10 Anni di Partecipazione a Mostra Internazionali Qualità al Cuore dello Sviluppo Sostenibile Unità di Supporto per Vite a Palline: Clienti Partners Soluzioni di Trasmissione YOSO professionisti formati nel campo dei componenti di trasmissione all'interno dell'azienda analizzano perfettamente i requisiti del disegno del cliente. Modelli 3D finiti facilitano gli accordi di produzione. Scambio Industriale YOSO è un grande sostenitore di tutti i noti eventi industriali che si tengono nel mondo come partecipante a questi scambi tra praticanti imprenditoriali avveniristici e aziende leader sono importanti terreno della nostra crescita. Unitas supportis screw ball fabricatur sub severa supervisone ut qualitas eius necessaria norma satisfaciat. Praeterea, fabricatores praebent systema supportis si quaevis difficultates cum instrumento tuo occurris. Servitus clientium est omnibus horis ad praebendam directionem et ad corrigendum quaevis difficultates quas forte occurrant. Qualitas producti coniuncta cum eximia servitute clientium facit Jingpeng vīrus scrūpulārius instrumentum idoneum his qui volunt investire in progressum machinarum suarum.
Jura Auctoria Servanda Sunt © Jingpeng Machinery&Equipment(Shanghai) Co.,Ltd
Unitas sustentationis helicis
Vantagia Supportus Helicis Globi

Innovatio Supportus Helicis Globi

Tutela Supportus Helicis Globi

Usum Supportus Helicis Globi
Why choose Jingpeng Unitas sustentationis helicis?
YOSO Company Profile
YOSO praebet magis competitive products
Optimus particeps motuum linearium
Industrie 4.0 optimum platform
Servitium et Qualitas Supportus Helicis Globi
Non invenis quod quaeris?
Petere Citatio Nunc
Consulere nostros pro magis productis disponibilibus.