Secara amnya semua perniagaan yang terus diteruskan ditentukan oleh pemasaran. Ini adalah cara untuk menunjukkan sesuatu yang bernilai kepada orang lain yang mungkin atau tidak mempunyai minat ke atasnya. Selain itu, ia membantu dalam mempromosikan 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- "Ciri Pemasaran Unik" Secara amnya semua perniagaan yang terus ditentukan oleh pemasaran. Ini adalah cara menunjukkan sesuatu nilai kepada orang lain yang mungkin atau mungkin tidak berminat dengannya. Selain itu, ia membantu dalam mempromosikan organisasi yang merupakan alat moden dan selamat untuk pemasaran bagi memenuhi objektif yang diperlukan. BK25 BF25 sebenarnya adalah pilihan yang popular jika berbicara tentang alat pemasaran, ia juga mempunyai kos yang lebih rendah berbanding kaedah pemasaran tradisional. Cara kedua ia membantu perniagaan adalah kerana syarikat boleh terus menuju kepada demografi sasaran mereka. Tanggapan yang dijana - syarikat boleh merancang dengan lebih baik mengenai bagaimana strategi pemasaran mereka dilaksanakan dengan mengikuti analisis yang menyeluruh. Ia mempunyai jumlah kes yang besar dalam pemasaran, jadi ia juga masuk akal dari segi ini juga tentulah. Iklan telah melangkah maju dengan lonjakan yang pasti raksasa sejak permulaan BK25 BF25 kerana ia muncul sebagai satu alat pemasaran istimewa untuk menjangkau pelanggan oleh organisasi-organisasi. Ia adalah perkhidmatan atau produk berterusan yang akan menjadi trend dengan menggunakan cara-cara baru seperti media sosial, promosi emel dan pemasaran pengaruh serta lain-lain. Ia membolehkan syarikat-syarikat berada jauh di hadapan pesaing mereka dengan menggunakan alat pemasaran terkini. Kami sentiasa menjadikan keselamatan sebagai perkara utama dalam mana-mana kawasan. BK25 BF25 ditawarkan sebagai dorongan pemasaran dan semua dokumentasi untuk menyokong ini akan diberikan. Ia direka untuk melindungi data pelanggan dan mengamankan sambungan terhadap risiko keselamatan yang meningkat. Selain itu, ia dirancang untuk menentang risiko yang terpecah-pecah akibat kos pemasaran penipuan di seluruh amalan iklan menyesatkan. Pemasangan dan operasi mudah BK25 BF25 Marketers membangun projek mereka yang merupakan pelancaran pemasaran kepada sekumpulan pengguna yang memenuhi keperluan yang diperlukan. Ia membolehkan syarikat mengukur keberkesanan kempen dan menyempurnakan strategi iklan mereka. Baiklah, ia adalah alat yang tidak dapat dipertikaikan bahawa ia adalah sempurna untuk sebarang saiz syarikat yang sedang berjalan dan setiap Industri di bawah Teknologi muda. YOSO adalah pakar dalam bentuk BK25 BF25 transmisi mekanikal. Garis pengeluaran CNC berskala besar yang baru dibina mampu menghasilkan panduan rol tunggal sepanjang 6 meter dalam jumlah banyak. Saiz maksimum panduan ialah 125. Panduan boleh dikeluarkan secara besar-besaran untuk siri penuh 25, 30, 35, 45, 55, 65, 85, 100, 125. Kapasiti beban maksimum bagi satu penjinak ialah 192t. Tapak pengeluaran skru mencipta kumpulan-kumpulan dengan diameter minimum Ph6mm, langkah satu-milimeter dan diameter maksimum Ph245mm; panjang skru tunggal 10m dengan muatan dinamik maksimum berperingkat 125 tan. Ia mampu mengeluarkan pasangan skru bola dalam pelbagai saiz, termasuk peringkat C1 sepanjang 2-meter dan 3-meter dalam kuantiti, serta 5-meter peringkat C3 hingga 10-meter peringkat C5. YOSO Motion adalah rakan sistem linear terbaik. Akan bekerja dengan anda untuk membantu Industri 4.0. Pengetahuan anda membuat China berbeza. Jingpeng Machinery ditubuhkan pada tahun 2015 dengan ibu pejabat di Shanghai dan melancarkan cabang EU di Poland pada tahun 2022 serta terus memperluas kehadiran globalnya. Selepas 10 tahun pembangunan, YOSO telah menjadi platform perdagangan terpadu dalam bidang transmisi mekanikal. Ia mempunyai nama jenama sendiri dan paten antarabangsa. Jingpeng sentiasa berpegang kepada gaya korporat yang menekankan 'jenama serta kualiti perkhidmatan' sejak awal. YOSO adalah sebuah jenama yang membolehkan kami pergi ke pameran antarabangsa yang memaparkan industri setiap tahun. Kualiti adalah inti pertumbuhan lestari YOSO. Perkhidmatan menjadikan pelanggan kami rakan bisnes. Jingpeng Machinery telah menjadi platform pembelian terkemuka dalam transmisi mekanikal Era Industri 4.0. Keyakinan ini didasarkan kepada 10 tahun pengeluaran produk tanpa cela, 190 jurutera yang telah mempraktikkan dalam 24 garis pengeluaran serta kawasan pengeluaran seluas 50,000 meter persegi. Setiap transmisi mekanikal memerlukan puluhan proses pengeluaran yang dipilih dengan teliti. YOSO berdedikasi untuk menghasilkan produk yang sempurna. Penyelesaian Integrasi Multi-produk YOSO, Menyediakan komponen pemindahan kawalan sepenuhnya dalam satu kedai produk untuk memenuhi keperluan pelanggan. Kami berdedikasi membantu pelanggan menjadi lebih bersaing di pasaran dengan memberikan penyelesaian teknikal, kecekapan kilang pemasaran, kuasa jenama dan kualiti produk. Kami menawarkan julat produk yang luas dengan prestasi unggul yang telah mendapat keyakinan di pasaran disebabkan pemahaman mendalam tentang keperluan pelanggan. Rakan-rakan di seluruh dunia telah membina hubungan BK25 BF25 dengan YOSO, strategi pengantaraan antarabangsa jenama YOSO mencapai pelanggan di rantau-rantau melalui rangkaian global. Jika anda ingin terlibat, silakan hubungi saya! Jenama: 10 tahun penyertaan pameran antarabangsa Kualiti sebagai inti pembangunan lestari. Perkhidmatan: Pelanggan rakan-rakan Penyelesaian penulenan YOSO staf yang dilatih dalam bidang komponen penulenan di dalam syarikat secara menyeluruh menganalisis keperluan pelanggan BK25 BF25 dan model produk akhir 3D memudahkan susunan pengeluaran. Pertukaran perindustrian YOSO menghargai setiap acara perindustrian yang terkenal di seluruh dunia dan secara aktif menyertai pertukaran antara praktisi, usahawan aplikasi berorientasikan hadapan dan syarikat-syarikat penting yang menjadi tanah subur kepada pertumbuhan kami. Semua yang perlu mereka lakukan adalah mendaftar akaun untuk platform tersebut dan memasarkan untuk sebuah syarikat yang ingin menggunakan ciri BK25 BF25. MENGGABUNGKAN siapa yang mereka ingin tunjukkan juga kempen mereka, apa pelan perbelanjaan yang mereka gunakan dengan jumlah orang sebenarnya sebelum mereka. Syarikat akan melihat bagaimana kempen berjalan segera selepas ia dilancarkan dan boleh membuat perubahan seperti yang diperlukan. Orang yang telah menggunakan sebelum ini mengakui bahawa BK25 BF25 boleh dengan bangga dimasukkan ke dalam senarai pelanggan dan ini pastinya teratas. Ini adalah platform yang sangat mudah dengan bantuan khidmat pelanggan untuk menyelesaikan mana-mana isu yang anda dapati. Selain itu, perkhidmatan ini mempunyai tutorial dan banyak webinar bertujuan membantu perniagaan mendapatkan faedah maksimum daripada kempen pemasaran mereka. Kualiti Lebih Baik dalam Pemasaran - BK25 BF25 dicipta melalui proses berterusan yang teliti digunakan untuk kempen pemasaran berkualiti tinggi bagi organisasi yang sesuai. Yup! Terdapat banyak jenis pemasaran dan sumber yang tersedia kepada organisasi di platform ini yang direka untuk membantu optimalkan usaha pemasaran elektronik mereka.
Hak Cipta © Jingpeng Machinery&Equipment(Shanghai) Co.,Ltd Hak Cipta Terpelihara
BK25 BF25
Manfaat:
Inovasi:
Keselamatan:
Gunakan:
Why choose Jingpeng BK25 BF25?
YOSO menyediakan produk yang lebih kompetitif
Profil Syarikat YOSO
Rakan terbaik gerakan linear
Industrie 4.0 platform terbaik
Cara-penggunaan:
Perkhidmatan:
Kualiti:
Tidak jumpa apa yang anda cari?
Minta Sebut Harga Sekarang
Hubungi pakar kami untuk mendapatkan lebih banyak produk yang tersedia.