Fondamentalement, toutes les entreprises qui continuent leur activité le décident en fonction du marketing. C'est une manière de montrer quelque chose de valeur aux autres, qui peuvent ou non s'y intéresser. De plus, cela aide à promouvoir l'orga... ">
,需要通过父级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)
}
})
})();
BK25 BF - "Une proposition marketing unique" Fondamentalement, toutes les entreprises qui continuent d'être dirigées par le marketing. C'est une manière de montrer quelque chose de valeur aux autres, qui peuvent ou non s'intéresser à cela. De plus, il aide à promouvoir les entreprises grâce à de nombreux outils modernes et sécurisés pour atteindre les objectifs requis. Le BK25 BF25 est vraiment une option populaire en ce qui concerne les outils de marketing, et il coûte également moins cher que les méthodes traditionnelles de marketing. La deuxième manière dont cela aide les entreprises, c'est que les sociétés peuvent atteindre directement leur public cible. La réponse générée - les entreprises peuvent donc mieux planifier en ce qui concerne la manière dont leurs stratégies de marketing sont exécutées, en suivant une analyse approfondie. Il dispose d'un grand nombre de cas dans le domaine du marketing, donc cela a également du sens pour cette raison bien sûr. La publicité a connu un bond certainement gigantesque avec l'apparition de BK25 BF25, car elle émerge comme un outil marketing exceptionnel pour atteindre les clients des entreprises. C'est un service ou produit en continu qui va faire fureur en utilisant de nouvelles méthodes comme les réseaux sociaux, les promotions par e-mail et le marketing d'influence, entre autres. Cela permet aux entreprises de rester en avance sur leurs concurrents en utilisant les derniers outils de marketing. Dans tous nos domaines d'activité, la sécurité est une priorité absolue. Le BK25 BF25 est proposé comme une campagne publicitaire et toute la documentation pour soutenir cela sera fournie. Conçu pour protéger les données des utilisateurs et sécuriser les connexions contre les menaces de sécurité croissantes. De plus, il est conçu pour contrer les risques liés aux coûts fractionnés de la fraude publicitaire due à des pratiques publicitaires trompeuses. Installation et fonctionnement faciles BK25 BF25. Les marketeurs développent leurs projets qui sont lancés en marketing vers un groupe d'utilisateurs répondant aux exigences nécessaires. Cela permet aux entreprises de mesurer l'efficacité de leur campagne et d'affiner leurs stratégies publicitaires. Eh bien, c'est indéniablement un outil qui est certainement parfait pour toute entreprise en cours, quelle que soit sa taille, et pour chaque secteur sous la jeune technologie. YOSO est un expert en transmissions mécaniques des formes BK25 BF25. De nouvelles lignes de production CNC à grande échelle de 6 mètres sont capables de produire des guides roulants de 6 mètres chacun en grande quantité. La taille maximale du rail-guide est de 125. Les rails-guides peuvent être produits en série complète : 25, 30, 35, 45, 55, 65, 85, 100, 125. La capacité de charge maximale d'un curseur individuel est de 192 tonnes. Les bases de production de vis créent des lots dont le diamètre minimal est de Ph6mm, avec une course d'un millimètre et un diamètre maximal de Ph245mm ; la longueur d'une vis peut atteindre 10m avec une charge dynamique maximale nominale de 125 tonnes. Elle est capable de produire des paires de vis à billes de différentes tailles, y compris des lots de niveaux C1 de 2 mètres et 3 mètres, ainsi que des niveaux C3 de 5 mètres et des niveaux C5 de 10 mètres. YOSO Motion est le meilleur partenaire pour les systèmes linéaires. Nous travaillerons avec vous pour aider l'Industrie 4.0. Votre perception rendra 'Made in China' différent. Jingpeng Machinery a fondé en 2015 son siège social à Shanghai et a lancé sa filiale en Europe en Pologne en 2022, tout en continuant à renforcer sa présence mondiale. Après 10 ans de développement, YOSO est devenu une plateforme intégrée de commerce et d'industrie dans le domaine de la transmission mécanique. Elle possède sa propre marque et des brevets internationaux. Jingpeng a adopté un style d'entreprise qui met l'accent sur « la marque ainsi que la qualité du service » dès le début. YOSO est une marque qui nous permet de participer à des salons internationaux qui présentent l'industrie annuellement. La qualité est au cœur de la croissance durable de YOSO. Le service rend nos clients des partenaires commerciaux. Jingpeng Machinery est devenue une plateforme d'achat de référence dans les transmissions mécaniques de l'industrie 4.0. Cette confiance repose sur 10 ans de production sans défauts, 190 ingénieurs qui maîtrisent 24 lignes de production ainsi qu'une superficie de production de 50 000 m². Chaque transmission mécanique nécessite plusieurs dizaines de processus de production soigneusement sélectionnés. YOSO s'engage à produire des produits parfaits. Solution d'intégration multi-produits YOSO, offrant des composants de transmission complets en un seul endroit pour répondre aux exigences des clients. Nous nous engageons à aider nos clients à être plus compétitifs sur le marché en fournissant des solutions techniques, de l'efficacité en usine au marketing, en passant par la force de la marque et la qualité des produits. Nous proposons une gamme de produits avec un large choix et des performances supérieures, qui ont gagné la confiance sur le marché grâce à une compréhension approfondie des besoins des clients. Des partenaires du monde entier ont établi des relations BK25 BF25 avec YOSO, et la stratégie d'internationalisation de la marque YOSO permet aux revendeurs d'atteindre les clients dans toutes les régions via un réseau mondial. Si vous souhaitez vous impliquer, n'hésitez pas à me contacter ! Marque : participation à des expositions internationales pendant 10 ans. La qualité au cœur du développement durable. Service : les clients sont nos partenaires. Solutions de transmission. Les professionnels formés par YOSO dans le domaine des composants de transmission analysent parfaitement les besoins des clients en ce qui concerne BK25 BF25. Des modèles en 3D du produit fini facilitent l'organisation de la production. Échanges industriels. YOSO accorde une grande importance à chaque événement industriel connu dans le monde, participant activement aux échanges entre praticiens, à l'esprit d'entrepreneuriat axé sur les applications prospectives et aux entreprises leaders, sol fertile pour notre croissance. Tout ce qu'ils ont à faire est de s'inscrire sur le compte de la plateforme et de promouvoir une entreprise qui souhaite utiliser la fonctionnalité BK25 BF25. EN INTEGRANT ceux à qui ils souhaitent également montrer leur campagne, quel est leur budget prévu avec le nombre réel de personnes devant eux. Les entreprises observeront comment la campagne se déroule dès qu'elle est activée et pourront apporter des modifications si nécessaire. Les personnes qui l'ont utilisé auparavant affirment que le BK25 BF25 peut fièrement figurer sur la liste des produits appréciés par les clients, et c'est certainement un des meilleurs. C'est une plateforme extrêmement simple à utiliser, avec un service client pour résoudre tous les problèmes que vous pourriez rencontrer. De plus, le service propose des tutoriels et de nombreux webinaires destinés à aider les entreprises à tirer le meilleur parti de leurs campagnes marketing. Une Qualité Supérieure dans le Marketing - Le BK25 BF25 est conçu en suivant un processus continu qui est soigneusement mis en œuvre pour des campagnes marketing de haute qualité, adaptées aux besoins des entreprises. Oui ! Il existe de nombreuses stratégies marketing différentes et ressources disponibles pour les entreprises sur cette plateforme, conçues pour optimiser leurs efforts de marketing électronique.
Copyright © Jingpeng Machinery&Equipment(Shanghai) Co., Ltd Tous droits réservés
BK25 BF25
Avantages :
Innovation :
Sécurité :
Utilisation :
Why choose Jingpeng BK25 BF25?
YOSO propose des produits plus compétitifs
Présentation de l'entreprise YOSO
Meilleur partenaire en mouvement linéaire
Industrie 4.0 meilleure plateforme
Mode d'emploi :
Service :
Qualité :
Vous ne trouvez pas ce que vous cherchez ?
Demandez un devis maintenant
Contactez nos consultants pour plus de produits disponibles.