Барояд куллӣ барномаҳои ки дар инҷорӯ буданд тавассути маркетинг муайян шуданд. Ин робитаи намоишии چизи ки арзишدار аст ба дигарон, ки ягон гӯшагӣ аз он доранд ё надоранд, мебошад. Бистар, ин аз даст аводаи ташвикӣ дар маркетинг... ">
,需要通过父级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 - "Охирин Ҷойи Маркетинг" Барои ҳар як аз бизнесҳои ке дар маркетинг мувафиқ аст, он дар бар мегирад. Ин ҷорӣ аст ки қимати қиматдорро ба дигарон нشон додани ке мумкин аст ки дар он заҳмат карда шуда будаанд ё не. Аъламҳои маркетингӣ мулоим ва ҳамчун инструментҳои модерн ва аман барои дости дар маркетинг дар мақсадҳои лозим. BK25 BF25 дар аслӣ ба шабакаи тарафандозӣ ҷойгир кардааст, ки бисёр аз равесҳои тарафандозии сабабпазир мебошад. Равеше ҷойгирӣ дар ҳалқаи маъмурии худ дохил мешавад ва барномаҳоро ба тағйирони лозим расонад. Пасоколи пешниҳодшаванда - барномагузоронҳои тарафандозӣ дар бораи интихоби стратегияҳои тарафандозӣ байстар мебаровард. Дар он ҳаля, он дорад мiqдори зиёди кучлии ҷойгирони тарафандозӣ, вагарнама дар инҷоя боед. Реклама дар ин чашма баргаст, ки астониироҳои ҷумлаъӣ дар онгоҳи BK25 BF25 пайдо шуд, чунинки он як орқали гурӯҳи маркетингӣ мебошад, ки ба мосоммалан борд мешавад. Он хизмат ё барномаи димакӣ аст, ки тағйир медидаст бо равандҳои нав ва методҳои навӣ, маъсуман социал тармош, пиши CascadeType ва маркетинги иҷодкорон ва гирифтан. Бо кор кардан аз ин аллати маркетингӣ нав, он мумkin аст, ки шerkатҳо дар соли худ аз раftarҳои худ муqaddam tar bashand. Барои reklama дар бароварии, хамчунин охирин, эҳтиёми асналии дар бароварии ҳар қайси шахт аст. BK25 BF25 дар онгоҳи реклама пушида мешавад ва ҳамаи санадҳои лозим дар онгоҳи он фароҳам мешаванд. Ин ҷустуҷӯ барои хамраҳ додани маълумотҳои мусافирон ва хамраҳ додани вобастагони интихобӣ зер матлоъ аст. Бисёр, он барои мубодилаи хатерҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ дар бораи моҳиятҳои моҳиятӣ. Намояндии содома ва кор бароварӣ BK25 BF25. Маркетологон ҷойи лозимро баъд аз ташкил додан лоиҳаи маркетингӣ худ ба гурӯҳи карбари ки шартҳои лозимро доред, пуштанд. Ин қадамро мушкилати кампанияҳои маркетингӣ ва тағйир додани стратегияҳои reklamaи худ ро мумkin мекунад. Хуб, ин қисми асбоб дар он че намунаи мувaffaq ёфтааст, ки маҷмӯи кишварӣ ва ҳар як аз саноатҳои зерини технологияи нав. YOSO мӯҳандиси кӯҳнаст BK25 BF25 форма тармимотҳои механикӣ аст. Чирогонҳои ҷадидсозӣ 6 метрӣ линияҳои узии CNC дар онгашт мебаранд, ки метрҳои 6 метрӣ рӯйаҳои чалбонро бе санҷаб мебаранд ва лот. индехаъи бузурги чалбони гиёҳ 125 аст. чалбонҳо дар серияи пурра 25, 30 35, 45 55, 65 85 100, 125 таъмин мешаванд. зиндашавӣи баробари хамаи слайдер 192т аст. базахои узи screw дастҳои кучактарро таъмин мекунанд, ки диаметри кучактар Ph6mm, метрҳои як lead ва диаметри бузургтар Ph245mm; метрҳои як screw 10m ва баробари динамики маъқул 125 тонн аст. У мебарад парвандагони screw ball дар азмунҳои фарқаманд, ваче C1 метрҳои 2 метр 3 метр, метрҳои 5 C3 метр ва метрҳои 10 C5 метр.YOSO Motion сотони бестарини системаи чалбон аст. он бо шумо хамкорӣ мекунад ва индустрияи 4.0-ро тағйир медиҳад. Даркаши шумо Сазоандегони Ҷойи Китайро фарқ мекунад. Машиниёти Джингпенг барои 2015 онро даромад, маркази асосии шаҳри Шанхай ва филияли Европаи Ҷумҳурияти Пулонияро дар 2022 онро тасис кард ва дар инти badaқардани ҷаҳонӣ худро илғор мекард. Барои 10 соле робита, ЙОСО шудааст платформаи таҷрибии дар маҳфили передачаи механики. Ин baraи худ номи бренд ва патентҳои дар жаҳон дорад. Джингпенг ба тарзи корпоратсияи кӯҳна эмронида мебаранд, ки "ном ва якчанд калитаи хизмат"ро аз онвори асосӣ омад. ЙОСО номи бренд аст, ки мумkin аст мо ба намоишҳои дар жаҳон беравем ва маъруфи саноатро дар солҳои салоҳӣ намоянд. Калита дар сердилхои рости лозими ЙОСО мебошад. Хизмат мушترӣҳоро ба шуркатҳои мо муталяк мекунад. Машини Джингпенг шудааст платформаи хариди лозим дар индустрияи 4.0 передачаи механика. эҳоти муборак барои 10 соле таҷрибаи бе хабароварӣ продуктҳо, 190 инженер, ки дар 24 чирогҳои производствӣ ва масоҳати производствии 50,000 метр мебаранд. Хар передачаи механики дар жамъияти чандан процессҳои интихоби доданро лозим дорад. ЙОСО камети мебарад, ки продуктҳои муфидро таҷриба кард. Ҳал кушоди интеграцияи калонҳои гурӯҳӣ YOSO, низоми пуррӯйхати ишоратро бармидорад, махсулотҳои якҷойи маъмурия ва тағйирёбии қуттии мураккабро дар он беҳам расонад. Ман ба фардоишҳои мусhtorон дуруст кардан, хизматҳои техникӣ, тафсир кардани карофиши санғи, тақвим намудани нişонаҳои бранди ва қолаби махсулоти дарoste мавзӯъ аст. Рӯйхати махсулотҳои мо барои истифодаи баробари ва боиҷоян будани даврҳои барномандӣ муваффиқ аст ва эҳтироми шуморо дар бозорҳои дунё парастیده аст чунинки доираи фардоишҳои мусhtorонро дар бар мегиред. Хамкорони дар ҷаҳон ёftонданд ва доirasони BK25 BF25 бо YOSO ташкил доданд, стратегияи барномандии бранди YOSO дар бароварии мусhtoronи дунё таъмин кардааст. Агар шумо хоҳиш доред ки дар он даст нашостед, лутфан манро мурожаат намоед! Брэнд: 10 соли дурустии чархбории дунёӣ муштарак. Сабаби калиати дар зерине роҳи барномаи мувафакиятпазир аст. Хизмат: Мушترимон хамкорон. Халли тармими YOSO маърузагонандагони професионали тренингшуда дар маҷмуъи тармим дар баробари шартҳои муштри BK25 BF25 ва моделҳои натиҷаи 3D ба ташвики тартиби узумӣ мебарад. Тавассути санʻатӣ YOSO инти badaроти ҳар якӣ аз воруди санʻатӣ, ки шанси дунон дар дунё мешиносанд ва феълӣ дар ичтитоғии дарбараи кардарон ва предприниматории нозои будогона ва шerkатҳои роҳبرон боҳодис намудааст. Ҳамаи чиз ки онҳо бояд кардашон, интихоби аккаунти платформа ва ташвири reklamaи Ҷирои компанияе ки мехоҳад аз фитратаи BK25 BF25 истифода баррад. Дар инҷо ки касонро ки мехоҳанд, reklamaи худро нишон медиҳанд, чегунони харчиши ки бо миқдори одами реалӣ пеш аз онҳо дар бар мегирад. Компанииҳо дар бораи чанди кампанияи худ рафтар мекунанд, пас аз ин ки онҳо зинди мешаванд ва тағйир додани лозимро мебаранд. Лоиҳаи кишварӣ ки шумораи қадимии онро истифода кардаанд, додан мебаранд ки BK25 BF25 метавонад беътегор дар феҳристи мушافирон гузашта шавад, ин ҳақиқатан баландтар аст. Ин хуб аст платформаи, ки бисёре аст ва бо ярдамди пайдо кардан мебарояд ҳарчанд муammoи ки шумо пайдо мекунед. Аз инҷо низ, хидмат таврикҳои таълимӣ дорад ва ин ба шумо рӯйхати вебинарҳои зиёдтар диҳад, ки маqsади он ғайри мулоим кардани bisнесҳо аст, лабба ёни бисёрини зиёдtar аз кампанияҳои маркетингӣ. Зиёдтар Сапмандии дар Маркетинг - BK25 BF25 созида шудааст дар чараи барнамагӣ, ки барои камpanyаҳои маркетингии баландтар аст ва барои корпорацияҳои ки барои онҳо созида шудааст. Ха! Бисёрин таълимҳои маркетингӣ ва манбаҳои мувофиқи платформа мавҷуд аст, ки маqsади он оптимиzасия кардани таъсирати маркетингии электронӣ аст.
Copyright © Jingpeng Machinery&Equipment(Shanghai) Co.,Ltd Ҳама ҳуқуқҳо ҳифз шудаанд
BK25 BF25
Фаидат:
Инновацӣ:
Безопасӣ:
Истифода:
Why choose Jingpeng BK25 BF25?
YOSO продуктҳои бистарин робитаи мухаббатдор рафта мебарад
Профили компании YOSO
Хамкори афзонаи харкати чарх
Индустрӣ 4.0 платформаи хубтарин
Чорагӯи истифода кардан:
Хизмат:
Сабаби хуб:
Чизи ки дуруст не меебینед?
Талаби худ ро интихоб намоед
Ба шӯрои мо мурасел шавед ва бо махсуси аз маҳсулотҳои мавҷуд ошино шавед.