介绍

游览器专门做给 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. 从DDPM到DDIM(四) 预测噪声与后处理

    从DDPM到DDIM(四) 预测噪声与后处理 前情回顾 下图展示了DDPM的双向马尔可夫模型. 训练目标.最大化证据下界等价于最小化以下损失函数: \[\boldsymbol{\theta}^*=\u ...

  2. GTC 2024 NVIDIA推出的新一代终端智能芯片 —— Jetson Thor

    比较好奇,NVIDIA今年推出的终端芯片Jetson Thor到底是个啥样,毕竟这东西在机器人元年的2024年开始预热宣传,2025年大规模部署,注定是AI领域的一个重要角色. 看完GTC 2024的 ...

  3. 腾达Tenda电力猫PA3的无线名称和密码

    趁着2023年的双11,买了一对腾达电力猫,毕竟在家里长距离使用这东西还是蛮方便的. =============================== 配置其实蛮简单的,配对嘛,就是两个都插上电,然后在 ...

  4. 记一次失败记录: MindSpore1.3.0 GPU 源码安装 —— Ubuntu18.04系统 (最终安装结果为失败)

    官网地址: https://www.mindspore.cn/install 系统:Ubuntu18.04 硬件: i7-9700k CPU 2060super nvidia显卡 由于考虑到minds ...

  5. 关于python的GIL的解除——PEP 703 – Making the Global Interpreter Lock Optional in CPython

    PEP地址: https://peps.python.org/pep-0703/ PEP 703 – Making the Global Interpreter Lock Optional in CP ...

  6. 除了Ubuntu以外的Linux系统可以安装Tensorflow/Pytorch的GPU版本吗???

    废话: 平时没事有用到的Linux系统有Centos/Redhat/Ubuntu/UOS/Deepin,其中Ubuntu系统主要是用来工作生产的,UOS就是看看国家队的进展如何,Deepin就是看看民 ...

  7. 内存交换空间--Swap Space

    转载请注明出处: 一.概述 内存交换空间(Swap Space)是计算机内存的一种补充,位于硬盘驱动器上.当物理内存(RAM)不足时,系统会将不活跃的页面(或称为内存页)移到交换空间中,以释放物理内存 ...

  8. [COCI2015-2016#1] UZASTOPNI 题解

    前言 题目链接:洛谷. 题意简述 一棵有根树,节点数 \(n \leq 10^5\),每个点有权值 \(v_i \leq 2000\),现在选出一些点,满足: 一个点的父亲点若未被选择则其不能被选择. ...

  9. 组长:你熟悉过React,开发个Next项目模板吧,我:怎么扯上关系的?

    组长:你熟悉过React,开发个Next项目模板吧,我:怎么扯上关系的? 最近工作安排我开发一个Next.js项目模板,心里默笑,React用得少得都快忘光了,现在得搞Next?虽然我曾是React的 ...

  10. Git回退服务器版本及receive.denyDeleteCurrent配置

    https://blog.csdn.net/sunalongl/article/details/52013435 如果某次修改了某些内容,并且已经commit到本地仓库,而且已经push到远程仓库了, ...