# sendBeacon统计数据
**navigator.sendBeacon()**
方法可用于通过HTTP (opens new window)将少量数据异步传输到Web服务器。
刷新/关闭页面之前发送请求。
# 开始
# 参数
navigator.sendBeacon(url, data);
----url
参数表明 data
将要被发送到的网络地址。
----data
参数是将要发送的 ArrayBufferView
(opens new window) 或 Blob
(opens new window), DOMString
(opens new window) 或者 FormData
(opens new window) 类型的数据。
# 返回值
当用户代理成功把数据加入传输队列时,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)
}