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) }