sendBeacon 埋点
navigator.sendBeacon() 方法可用于通过 HTTP (opens new window) 将少量数据异步传输到 Web 服务器。 刷新/关闭页面之前发送请求
参数
navigator.sendBeacon(url , data) ;
---- url 参数表明 data 将要被发送到的网络地址。
---- data 参数是将要发送的 ArrayBufferView 或 Blob , DOMString 或者 FormData 类型的数据
返回值
当用户代理成功把数据加入传输队列时, sendBeacon() 方法将会返回 true ,否则返回 false
代码
const data = JSON.stringify({
eventSn: eventId,
sendingTime: Date.now(),
token: this.people.token,
eventVariable: eventLevelVariables,
defaultVariable: {
...this.global,
...this.page(),
is_first_time,
...{
open_id: this.people.open_id,
udid: this.people.udid,
},
title: document.title,
},
})
if (navigator.sendBeacon && parser.os.name !== 'iOS') {
window.navigator.sendBeacon(URL, data)
} else {
var client = new XMLHttpRequest()
client.open('POST', URL, async)
client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8')
client.send(data)
}