javascript - 为什么 JavaScript 跟踪器使用 img 标签而不是 XMLHttpRequest?
问题描述
我正在尝试构建一个 javascript 分析跟踪器,如谷歌分析。我试图查看其他一些实现的来源,他们使用一个img
或一个script
标签来调用 API 后端进行跟踪。
我想知道他们为什么不使用XMLHttpRequest
来提出请求?我的猜测是避免被反跟踪器阻止,但不确定。
有人知道吗?
解决方案
几个原因:
遗留:例如,Google Analytics 以前是Urchin在“像素”跟踪是前端分析的事实标准时创建的
浏览器兼容性:它们
<img>
的<script>
实现都是相同的(只需添加标签),而XMLHttpRequest
旧版浏览器并非如此。易于实现:只需添加
<img>
and<script>
就可以了,XMLHttpRequest
实际上您需要编写一些代码鲁棒性/防止阻塞:
<img>
更难检测为与广告/跟踪相关,因为从另一个域加载具有复杂外观 URL 的图像实际上是常见做法(例如考虑 CDN)Web/Email 跨平台:您可以使用 实现电子邮件跟踪
<img>
,但不能使用<script>
(出于安全原因被阻止)。JavaScript 支持:禁用 JS 后,像素跟踪仍然有效
推荐阅读
- vue.js - [Vue 警告]:挂载钩子中的错误:“TypeError:this.$refs.canvas 未定义”
- android - 确定 android 设备是否是 samsung edge 设备之一
- deep-learning - 如何在使用 SSD 的对象检测中拒绝误报?
- docker - 带有 .npmrc 的 Docker 和私有包
- css - 根据其他类的存在有条件地隐藏元素
- cassandra - DSE Cassandra 审核日志未在 DML 中捕获 UDT
- sql - 如何根据 sqlite 中的另一列为每个组选择前 3 名?
- node.js - Dialog api v2 - 获取应用程序默认凭据时出现意外错误:无法加载默认凭据
- oracle - Oracle MERGE 语句是否在提交完成之前返回
- r - R:使用观察次数删除变量