YanTianFeng的知识库

Want Coding

Want Reading

文章 89

访问 18443

评论 2

头像

YanTianFeng

发私信

文章 89
访问 18443
评论 2
Technology and Code
返回顶部

Knowledge  sendBeacon埋点

标签   埋点  

  ( 10 )       ( 0 )


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