Esencialmente, todas las empresas que continúan en funcionamiento lo deciden mediante el marketing. Esta es una forma de mostrar algo de valor a otros que pueden o no tener interés en ello. Además, ayuda en la promoción de 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- "Una Propuesta de Marketing Única" Básicamente, todas las empresas que continúan dependiendo del marketing. Esta es una forma de mostrar algo de valor a otros que pueden o no tener interés en ello. Además, ayuda a promover organizaciones con herramientas modernas y seguras para el marketing que cumplen con los objetivos requeridos. La BK25 BF25 es realmente una opción popular en lo que respecta a herramientas de marketing, además cuesta menos que los métodos tradicionales de marketing. La segunda forma en que ayuda a las empresas es el hecho de que pueden llegar directamente a su demografía objetivo. La respuesta generada - las empresas pueden planificar mejor en cuanto a cómo se llevan a cabo sus estrategias de marketing basándose en un análisis exhaustivo. Tiene una gran cantidad de casos en marketing, por lo que también tiene sentido por esa razón, por supuesto. La publicidad ha dado un salto sin duda gigantesco con el inicio de BK25 BF25, ya que surge como una herramienta de marketing excepcional para llegar a los clientes para las empresas. Es un servicio o producto continuo que tendrá éxito utilizando nuevas formas como las redes sociales, promociones por correo electrónico y el marketing de influencers, entre otras. Permite a las empresas estar por delante de sus competidores utilizando las herramientas de marketing más recientes. En cuanto a la promoción, la seguridad está en primer lugar en cualquier área. El BK25 BF25 se ofrece como un empuje publicitario y toda la documentación que lo respalda será proporcionada. Está diseñado para proteger los datos de los usuarios y asegurar las conexiones contra amenazas de seguridad crecientes. Además, está destinado a contrarrestar los riesgos que representan los costos fraccionados del fraude publicitario derivados de prácticas publicitarias engañosas. Instalación y operación fáciles BK25 BF25. Los marketeros desarrollan sus proyectos que son de marketing y los lanzan a un grupo de usuarios que cumplen con los requisitos necesarios. Esto permite a las empresas medir la efectividad de la campaña y ajustar sus estrategias publicitarias. Bueno, sin duda es una herramienta que es perfecta para cualquier empresa en funcionamiento, independientemente del tamaño y para toda industria bajo nueva Tecnología. YOSO es experto en transmisiones mecánicas de formas BK25 BF25. Nuevas líneas de producción CNC a gran escala de 6 metros pueden producir rieles deslizantes de 6 metros cada uno en grandes cantidades. El tamaño máximo del riel guía es de 125. Los rieles guía se pueden producir en serie completa: 25, 30, 35, 45, 55, 65, 85, 100 y 125. La capacidad máxima de carga de un deslizador individual es de 192 toneladas. Las bases de producción de roscas crean lotes con un diámetro mínimo de Ph6mm, un avance de un milímetro y un diámetro máximo de Ph245mm; la longitud de una rosca puede ser de hasta 10m con una carga dinámica máxima nominal de 125 toneladas. Es capaz de producir pares de roscas de bolas de varios tamaños, incluidos niveles C1 de 2 metros y 3 metros en lotes, niveles C3 de 5 metros y niveles C5 de 10 metros. YOSO Motion es su mejor socio en sistemas lineales. Trabajará con usted para ayudarle en la Industria 4.0. Su percepción hará que Made in China sea diferente. Jingpeng Machinery fundó en 2015 su sede en Shanghái y lanzó su sucursal en la UE en Polonia en 2022, y continúa profundizando su presencia global. Después de 10 años de desarrollo, YOSO se ha convertido en una plataforma integrada de comercio e industria en el campo de la transmisión mecánica. Tiene su propia marca y patentes internacionales. Jingpeng ha adherido a un estilo corporativo que enfatiza "marca así como calidad del servicio" desde el principio. YOSO es una marca que nos permite participar en ferias internacionales que muestran la industria anualmente. La calidad está en el núcleo del crecimiento sostenible de YOSO. El servicio hace que nuestros clientes sean socios comerciales. Jingpeng Machinery se ha convertido en una plataforma de compra líder en transmisiones mecánicas de la industria 4.0. Esta confianza se basa en 10 años produciendo productos sin defectos, 190 ingenieros que han estado practicando en 24 líneas de producción, así como en un área de producción de 50,000m2. Cada transmisión mecánica necesita docenas de procesos de producción cuidadosamente seleccionados. YOSO está comprometida a producir productos perfectos. Solución de Integración Multi-producto YOSO, proporciona un control completo de componentes de transmisión en un solo destino que satisface las necesidades del cliente. Nos comprometemos a ayudar a los clientes a ser más competitivos en el mercado ofreciendo soluciones técnicas, eficiencia en la fábrica, marketing, poder de marca y calidad del producto. Ofrecemos una gama de productos con una amplia selección de alto rendimiento que ha ganado la confianza en el mercado debido a una profunda comprensión de los requisitos del cliente. Socios alrededor del mundo han establecido relaciones BK25 BF25 con YOSO, y la estrategia de internacionalización de la marca YOSO alcanza a los clientes en regiones a través de una red global. Si deseas involucrarte, ¡por favor contáctame! Marca: Participación en exposiciones internacionales durante 10 años. Calidad como núcleo del desarrollo sostenible. Servicio: Clientes como socios. Soluciones de transmisión. Los profesionales capacitados por YOSO en el campo de los componentes de transmisión dentro de la empresa analizan perfectamente las necesidades del cliente BK25 BF25 y los modelos en 3D de productos terminados facilitan los arreglos de producción. Intercambio industrial. YOSO valora mucho cada evento industrial, conocido en todo el mundo, y participa activamente en intercambios entre profesionales, emprendimientos de aplicaciones visionarias y empresas líderes, lo cual es fundamental para nuestro crecimiento. Lo único que tienen que hacer es registrarse en la cuenta de la plataforma y promocionar por una empresa que desee utilizar la función BK25 BF25. INCORPORANDO a quienes deseen mostrar también su campaña, qué presupuesto tienen utilizando el número real de personas antes de ellos. Las empresas observarán cómo va la campaña tan pronto como se active y pueden hacer cambios según sea necesario. Las personas que lo han usado antes afirman que el BK25 BF25 puede incluirse con orgullo en la lista de clientes, y ciertamente es de los mejores. Esta es una plataforma muy sencilla, con soporte de atención al cliente para resolver cualquier problema que encuentres. Además, el servicio ofrece tutoriales y numerosos seminarios web destinados a ayudar a las empresas a aprovechar al máximo sus campañas de marketing. Más Calidad en Marketing - El BK25 BF25 se crea mediante un proceso continuo que es meticuloso y está destinado a campañas de marketing de alta calidad para empresas. ¡Sí! Hay muchos tipos diferentes de marketing y recursos disponibles para las empresas en la plataforma, diseñados para ayudar a optimizar sus esfuerzos de marketing digital.
Derechos de autor © Jingpeng Machinery&Equipment(Shanghai) Co.,Ltd Todos los derechos reservados
BK25 BF25
Beneficios:
Innovación:
Seguridad:
Uso:
Why choose Jingpeng BK25 BF25?
YOSO proporciona productos más competitivos
Perfil de la empresa YOSO
Mejor socio en movimiento lineal
Industrie 4.0 mejor plataforma
Cómo usar:
Servicio:
Calidad:
¿No encuentra lo que busca?
Solicite una Cotización Ahora
Póngase en contacto con nuestros consultores para obtener más productos disponibles.