Về cơ bản, tất cả các doanh nghiệp tiếp tục hoạt động đều được quyết định bởi marketing. Đây là một cách để thể hiện điều gì đó có giá trị cho những người khác, những người có thể hoặc không quan tâm đến nó. Ngoài ra, còn hỗ trợ trong việc quảng bá tổ chức... ">
,需要通过父级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 - "Một Công Cụ Tiếp Thị Độc Đáo" Cơ bản tất cả các doanh nghiệp đều phụ thuộc vào tiếp thị. Đây là cách thể hiện điều gì đó có giá trị cho người khác, người có thể hoặc không có hứng thú với nó. Ngoài ra, còn hỗ trợ trong việc quảng bá các tổ chức với nhiều công cụ hiện đại và an toàn cho mục tiêu tiếp thị cần đạt được. BK25 BF25 thực sự là một lựa chọn phổ biến khi nói đến công cụ tiếp thị, đồng thời nó còn rẻ hơn so với các phương pháp tiếp thị truyền thống. Cách thứ hai mà phương pháp này giúp doanh nghiệp là các công ty có thể tiếp cận trực tiếp đến nhóm đối tượng mục tiêu của mình. Phản hồi được tạo ra - nhờ đó các công ty có thể lên kế hoạch tốt hơn về cách thực hiện các chiến lược tiếp thị của họ dựa trên một phân tích kỹ lưỡng. Nó có rất nhiều ứng dụng trong lĩnh vực tiếp thị, vì vậy việc sử dụng nó cũng rất hợp lý vì lý do này. Quảng cáo đã có một bước nhảy vọt chắc chắn là khổng lồ kể từ sự ra đời của BK25 BF25 vì nó xuất hiện như một công cụ tiếp thị ngoại hạng để tiếp cận khách hàng cho các tổ chức. Đây là một dịch vụ hoặc sản phẩm liên tục sẽ thịnh hành bằng cách sử dụng những phương pháp mới hơn như mạng xã hội, khuyến mãi qua email và tiếp thị ảnh hưởng, v.v. Cho phép các doanh nghiệp vượt trước đối thủ cạnh tranh bằng cách sử dụng các công cụ tiếp thị mới nhất. Chúng tôi luôn đặt an toàn lên hàng đầu trong bất kỳ lĩnh vực nào mà chúng tôi hoạt động. BK25 BF25 được cung cấp như một chiến dịch quảng cáo và tất cả tài liệu hỗ trợ điều này sẽ được cung cấp. Được thiết kế để bảo vệ dữ liệu người dùng và đảm bảo kết nối an toàn khỏi các mối đe dọa bảo mật ngày càng tăng. Ngoài ra, nó còn nhằm đối phó với các rủi ro phân mảnh về chi phí gian lận tiếp thị do các thực hành quảng cáo lừa đảo. Cài đặt và vận hành dễ dàng BK25 BF25, các nhà tiếp thị phát triển dự án của họ và tung ra thị trường cho một nhóm người dùng đáp ứng các yêu cầu cần thiết. Điều này giúp các công ty đo lường hiệu quả chiến dịch và hoàn thiện chiến lược quảng cáo của mình. Vâng, đây chắc chắn là một công cụ tuyệt vời dành cho mọi quy mô doanh nghiệp và mọi ngành công nghiệp trong lĩnh vực Công nghệ mới. YOSO là chuyên gia về truyền động cơ khí dạng BK25 BF25. Các dây chuyền sản xuất CNC quy mô lớn mới được xây dựng có khả năng sản xuất các thanh trượt dài 6 mét với số lượng lớn. Kích thước tối đa của thanh dẫn là 125. Toàn bộ loạt thanh dẫn từ 25, 30, 35, 45, 55, 65, 85, 100, 125 đều có thể sản xuất hàng loạt. Khả năng chịu tải tối đa của một con lăn riêng lẻ là 192 tấn. Các cơ sở sản xuất ốc vít có thể tạo ra các mẻ với đường kính tối thiểu Ph6mm, bước ren một milimét và đường kính tối đa Ph245mm; độ dài ốc vít lên tới 10m với tải trọng động định mức tối đa là 125 tấn. Nó có khả năng sản xuất các cặp ốc bi với nhiều kích thước khác nhau, bao gồm các mẻ C1 dài 2 mét và 3 mét, cũng như các mẻ C3 dài 5 mét và C5 dài 10 mét. YOSO Motion là đối tác hệ thống tuyến tính tốt nhất. Sẽ hợp tác với bạn để giúp phát triển Công nghiệp 4.0. Nhận thức của bạn về Made in China sẽ làm nên sự khác biệt. Jingpeng Machinery thành lập năm 2015, trụ sở chính tại Thượng Hải và mở chi nhánh EU tại Ba Lan vào năm 2022, tiếp tục củng cố sự hiện diện toàn cầu. Sau 10 năm phát triển, YOSO đã trở thành một nền tảng tích hợp thương mại và công nghiệp trong lĩnh vực truyền động cơ khí. Nó có tên thương hiệu riêng và bằng sáng chế quốc tế. Jingpeng tuân thủ phong cách doanh nghiệp nhấn mạnh "thương hiệu cũng như chất lượng dịch vụ" ngay từ đầu. YOSO là một thương hiệu giúp chúng tôi tham gia các triển lãm quốc tế, trưng bày ngành công nghiệp mỗi năm. Chất lượng là yếu tố cốt lõi cho sự tăng trưởng bền vững của YOSO. Dịch vụ làm cho khách hàng trở thành đối tác kinh doanh của chúng tôi. Jingpeng Machinery đã trở thành nền tảng mua sắm hàng đầu về truyền động cơ khí trong kỷ nguyên Công nghiệp 4.0. Sự tự tin này dựa trên 10 năm sản xuất các sản phẩm hoàn hảo, 190 kỹ sư đã thực hành trên 24 dây chuyền sản xuất cùng với khu vực sản xuất rộng 50.000m2. Mỗi truyền động cơ khí cần hàng chục quy trình sản xuất được chọn lọc kỹ lưỡng. YOSO cam kết tạo ra những sản phẩm hoàn hảo. Giải pháp tích hợp đa sản phẩm YOSO, Cung cấp các thành phần truyền động và điều khiển trọn gói một điểm đến đáp ứng yêu cầu của khách hàng. Chúng tôi cam kết giúp khách hàng trở nên cạnh tranh hơn trên thị trường bằng cách cung cấp các giải pháp kỹ thuật, hiệu quả nhà máy trong tiếp thị, sức mạnh thương hiệu và chất lượng sản phẩm. Chúng tôi cung cấp phạm vi sản phẩm với sự lựa chọn đa dạng có hiệu suất vượt trội đã giành được niềm tin trên thị trường nhờ sự hiểu biết sâu sắc về nhu cầu của khách hàng. Các đối tác trên toàn thế giới đã thiết lập mối quan hệ BK25 BF25 với YOSO, chiến lược quốc tế hóa của thương hiệu YOSO thông qua mạng lưới đại lý đạt đến khách hàng ở các khu vực toàn cầu. Nếu bạn muốn tham gia, vui lòng liên hệ với tôi! Thương hiệu: Tham gia triển lãm quốc tế trong 10 năm. Chất lượng là cốt lõi của sự phát triển bền vững. Dịch vụ: Khách hàng là đối tác. Giải pháp truyền động. Nhân viên YOSO được đào tạo chuyên nghiệp trong lĩnh vực các bộ phận truyền động, có khả năng phân tích hoàn hảo nhu cầu của khách hàng về BK25 BF25 và cung cấp mô hình sản phẩm 3D để hỗ trợ sắp xếp sản xuất. Trao đổi ngành công nghiệp. YOSO đánh giá cao mỗi sự kiện ngành nghề nổi tiếng trên toàn thế giới và tích cực tham gia vào các cuộc trao đổi giữa các nhà thực hành, doanh nhân tiên phong trong ứng dụng và các công ty dẫn đầu, điều này rất quan trọng cho sự tăng trưởng của chúng tôi. Tất cả những gì họ cần làm là đăng ký tài khoản trên nền tảng và quảng bá cho một công ty muốn sử dụng tính năng BK25 BF25. Bao gồm những ai họ muốn hiển thị chiến dịch của mình, ngân sách mà họ có với số lượng người trước khi bắt đầu. Các doanh nghiệp sẽ theo dõi tiến trình chiến dịch ngay sau khi nó được kích hoạt và có thể thực hiện thay đổi khi cần thiết. Những người đã sử dụng trước đây cho biết rằng BK25 BF25 có thể tự hào được đưa vào danh sách khách hàng và chắc chắn là sản phẩm hàng đầu. Đây thực sự là một nền tảng rất đơn giản, với sự hỗ trợ chăm sóc khách hàng để giải quyết bất kỳ vấn đề nào bạn gặp phải. Ngoài ra, dịch vụ còn cung cấp các hướng dẫn và nhiều hội thảo trực tuyến nhằm giúp các doanh nghiệp tận dụng tối đa chiến dịch tiếp thị của họ. Chất Lượng Cao Hơn Trong Tiếp Thị - BK25 BF25 được tạo ra thông qua một quy trình cẩn thận nhằm phục vụ cho các chiến dịch tiếp thị chất lượng cao dành cho các tổ chức. Đúng vậy! Có rất nhiều phương pháp tiếp thị khác nhau và tài nguyên dành cho các tổ chức trên nền tảng này, được thiết kế để giúp tối ưu hóa nỗ lực tiếp thị điện tử của họ.
Bản quyền © Jingpeng Machinery&Equipment(Shanghai) Co.,Ltd. Tất cả các quyền được bảo lưu
BK25 BF25
Lợi ích:
Đổi mới:
An toàn:
Sử dụng:
Why choose Jingpeng BK25 BF25?
YOSO cung cấp các sản phẩm cạnh tranh hơn
Hồ sơ công ty YOSO
Đối tác tốt nhất trong chuyển động tuyến tính
Industrie 4.0 là nền tảng tốt nhất
Cách sử dụng:
Dịch vụ:
Chất lượng:
Không Tìm Thấy Thứ Bạn Đang Tìm?
Yêu Cầu Báo Giá Ngay
Liên hệ với các chuyên gia tư vấn của chúng tôi để biết thêm sản phẩm có sẵn.