【修改】调整下载传参

This commit is contained in:
zhoulingpo
2023-05-25 14:14:48 +08:00
parent a77a7d5191
commit 9229352e9b
2 changed files with 142 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
const config = {
webId: '',
// QuickTracking
appKey: '54x8kny36dp66gbiqngsdnmu',
trackHost: 'api_ubtas.faw-vw.com',
sdkUrl: 'https://o.alicdn.com/QTSDK/quicktracking-sdk/qt_web.umd.js'
}
export default config
+134
View File
@@ -0,0 +1,134 @@
import config from '@/utils/env'
import store from '@/store'
console.log(config)
const {
appKey,
trackHost,
sdkUrl
} = config
export const EventType = {
Exp: 'EXP',
Click: 'CLK',
Other: 'OTHER'
}
export function init() {
if (!window.aplus_queue) {
initQueue()
loadQuickTrackSDK()
.then(() => {
setUserInfo()
})
}
}
export function sendTrackEvent({
eventName,
pageName = eventName,
eventType = EventType.Click,
params
}) {
console.log('qt event', eventName, pageName, eventType, params)
window.aplus_queue.push({
action: 'aplus.record',
arguments: [eventName, eventType, {
...params,
page_name: pageName
}]
})
}
export function sendTrack({
eventName,
pageName = eventName,
params
}) {
console.log('qt tracking', eventName, pageName, params)
window.aplus_queue.push({
action: 'aplus.sendPV',
arguments: [{
is_auto: false
}, {
// ts: Date.now(),
// path: eventName, // 当前page的url
page_name: pageName,
...params
}]
})
}
function initQueue() {
window.aplus_queue = []
// 手动 PV
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-waiting', 'MAN']
})
// 集成应用的appKey
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['appKey', appKey]
})
// 如果是私有云部署还需要在上面那段JS后面紧接着添加日志域名埋点
if (trackHost) {
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-rhost-v', trackHost]
})
}
// 关闭全埋点
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-autotrack-enabled', false]
})
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_hold', 'BLOCK']
})
}
async function loadQuickTrackSDK() {
// qt的库回覆盖window.history的函数 pushState, replaceState 函数并导致IE11报错
// 这里覆盖回去
const nativePushState = window.history.pushState
const nativeReplaceState = window.history.replaceState
return new Promise((resolve) => {
const $scriptInDOM = document.getElementsByTagName('script')[0]
const $script = document.createElement('script')
$script.async = true
$script.id = 'beacon-aplus'
$script.src = sdkUrl
$script.onload = () => {
// qt库内部在body渲染之后延时51,这里延时200应该足以覆盖
sleep(200).then(() => {
window.history.pushState = nativePushState
window.history.replaceState = nativeReplaceState
resolve()
})
}
$scriptInDOM.parentNode.insertBefore($script, $scriptInDOM)
})
}
async function setUserInfo() {
const userInfo = store.getters.userInfo
if (userInfo) {
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_user_id', userInfo.usid]
})
}
window.aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_hold', 'START']
})
}
async function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms)
})
}