介绍

游览器专门做给 tracking 用的接口. 从前我们想 tracking 用户点击 anchor 是比较麻烦的.

因为 click 事件触发后, 想发 ajxax 去做 tracking record 但在 ajax 还没有返回时, 游览器已经跳转了.

解决方案是 preventDefault 等 ajax 返回后才执行跳转, 但这样体验就很差了丫. 所以就有了 SendBeacon.

游览器会背地里执行它, 确保不影响用户体验又成功发送 request.

参考

MDN – Navigator.sendBeacon()

操作

const aboutLink = document.querySelector("#about-link")!;
aboutLink.addEventListener("click", (e) => {
const formData = new FormData();
formData.append("source", "google");
formData.append("medium", "cpc"); const queryParams = new URLSearchParams({
source: "google",
medium: "cpc",
}); navigator.sendBeacon("https://192.168.1.152:44300/api/tracking", queryParams);
navigator.sendBeacon("https://192.168.1.152:44300/api/tracking", formData);
});

它的 data 支持很多种格式

不支持 header 哦. 不要把它当成 Fetch 或者 XMLHttpRequest 来使用. 它只属于 tracking purpose 而已.

BOM – Navigator SendBeacon的更多相关文章

  1. 温故而知新 前端日志上传新姿势 navigator.sendBeacon(信标)

    原文地址:https://mp.weixin.qq.com/s/-moAfEZicrFmun4qfWLdOQ 简单示例js: var data = JSON.stringify({ name: 'Be ...

  2. 使用 navigator.sendBeacon() 上报数据

    http://kaifage.com/notes/76/navigator-sendBeacon.html 如某些统计系统,在页面unload时,如果要上报当前数据,采用xhr的同步上报方式,会阻塞当 ...

  3. BOM&Navigator对象

    <!-- BOM:Brower Object Model 浏览器对象模型 这个模型方便操作浏览器 浏览器对应的对象就是windows对象,这个可以通过查阅DHTML API获得 --> & ...

  4. BOM 浏览器对象模型_window.navigator

    window.navigator 对象 包含浏览器和系统信息的 Navigator 对象. 通过这个属性 了解用户的环境信息 window.navigator.userAgent 返回浏览器的 Use ...

  5. navigator.sendBeancon方法简介

    之所以介绍这个还在草案中的方法,是源于最近新做的一个活动.该活动有个需求,就是用户离开该页面的某个时间段之后,发个请求给该用户送券.后来是通过setTimeout来做的,用户离开该页面,该页面进入后台 ...

  6. BOM 浏览器对象模型_XMLHttpRequest 对象

    XMLHttpRequest 对象 浏览器与服务器之间,采用 HTTP 协议 通信. 用户在浏览器地址栏键入一个网址,或者通过网页表单向服务器提交内容,这时浏览器就会向服务器发出 HTTP 请求 AJ ...

  7. js sendBeacon

    页面性能日志: DNS解析耗时 TCP链接耗时 SSL安全链接耗时 网络请求耗时 DOM解析耗时 资源加载耗时 首包时间 白屏时间 首次可交换时间 Dom Ready时间 页面完全加载时间. 如某些统 ...

  8. html5统计数据上报API:SendBeacon

    公司为了精准的了解自己产品的用户使用情况,通常会对用户数据进行统计分析,获取pv.uv.页面留存率.访问设备等信息.与之相关的就是客户端的数据采集,然后上报的服务端.为了保证数据的准确性,就需要保证数 ...

  9. Web前端 --- BOM和DOM

    目录 前端基础之BOM和DOM BOM DOM 前端基础之BOM和DOM BOM是指浏览器对象模型,他使JavaScript有能力与浏览器进行对话 DOM是指文档对象模型,通过它,可以访问HTML文档 ...

  10. 利用 sendBeacon 发送统计信息

    我们经常会在网站追踪用户的信息,比如记录用户的停留时间. window.addEventListener("unload", () => { // sendHTTP }); ...

随机推荐

  1. 基于EF Core存储的Serilog持久化服务

    前言 Serilog是 .NET 上的一个原生结构化高性能日志库,这个库能实现一些比内置库更高度的定制.日志持久化是其中一个非常重要的功能,生产环境通常很难挂接调试器或者某些bug的触发条件很奇怪.为 ...

  2. MySQL_数据库命名规范及约定

    操作规范 如无说明,建表时一律采用innodb引擎: 如无说明,数据库表编码集(utf8,utf8_bin)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf ...

  3. [oeasy]教您玩转python - 0002 - 你好世界(hello world!)

    ​ 你好世界 回忆上次内容 这次我们, 了解了 Python 进入了 Python 退出了 Python 这并不难 这就是我们对于 Python 的初体验 恭喜您存活了下来! ​ 编辑 python ...

  4. CF1204A 题解

    洛谷链接&CF 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定一个二进制字符串 \(S\),求这个二进制数包含 \(4 ^ k\) 的个数. 特殊的:若 ...

  5. Python 实时获取任务请求对应的Nginx日志

    需求描述 项目需求测试过程中,需要向Nginx服务器发送一些用例请求,然后查看对应的Nginx日志,判断是否存在特征内容,来判断任务是否执行成功.为了提升效率,需要将这一过程实现自动化. 实践环境 P ...

  6. 【VMware VCF】VMware Cloud Foundation Part 05:部署 SDDC 管理域。

    之前文章("VMware Cloud Foundation Part 03:准备 Excel 参数表."和"VMware Cloud Foundation Part 04 ...

  7. Jmeter函数助手29-dateTimeConvert

    dateTimeConvert函数用于将源格式进行目标格式的转换. 格式化时间:传入时间参数,此处格式需要与源时间格式一致 源时间格式:传入参数的时间格式 目标时间格式:想要转换成的格式 1.将源格式 ...

  8. 【FTP】小米手机FTP传输

    设置方法 打开[文件管理],右上角按钮选择[远程管理] 点击设置按钮 默认保持唤醒状态 设置FTP账户的用户名密码 Windows访问: 然后开启服务即可: 手机和电脑连接同一个网络内访问 每次接入网 ...

  9. 【Java】Reflection 反射机制 03调用

    调用属性,方法,构造器 属性调用 @Test public void fieldCall() throws NoSuchFieldException, IllegalAccessException, ...

  10. 使用Transformer模型实现四足机器人控制—— 跨模态Transformer: LocoTransformer —— LEARNING VISION-GUIDED QUADRUPEDAL LOCOMOTION END-TO-END WITH CROSS-MODAL TRANSFORMERS

    论文: LEARNING VISION-GUIDED QUADRUPEDAL LOCOMOTION END-TO-END WITH CROSS-MODAL TRANSFORMERS 发表于ICLR20 ...