- 新增: 支持 cookie_disabled 参数,默认为 false,当设置为 true 时,将不再使用 cookie 存储。
- 新增: 支持 cookie_expires 参数,数值型,单位
秒
,默认为 63072000。可修改 cookie 存储的有效时间。
- 新增: 支持 bytedance_applet_track 参数, 默认为 true,开启后,当被嵌在字节跳动小程序 webview 中,pageview、action 会触发小程序的
webviewPageview
、webviewAction
- 新增: 支持 url_change_track 参数,默认为 false,当设置为 true 时候 URL 发生改变的时候发送 pageview, 主要针对 SPA 的网站 (比如使用的 react/ vue),监听支持 History API 和 hashchange 的调用
示例:
_ha("create", "PROJECT ID", {
url_change_track: true,
});
- 修复: 当开启自动跟踪,触发事件在 QQ 浏览器存在的兼容性问题。
- 新增: 当被嵌入小程序或者 App 的 webview 中,新增参数
source
: ios
/ android
/ wechat
- 新增: 当被嵌入小程序 webview 中, pageview 会中触发小程序的
webviewPageview
- 新增: 当被嵌入 App 的 webview 中, pageview 会中触发 App 的
hmtActivityStart
- 修复 title 获取错误的问题
- 新增配置:
- web_track: 所有 web 跟踪,默认开启
- app_track: 当前页面载入到移动 App 的 webview 中,所有 web 对应的配置的行为跟踪都会调用 App SDK 的行为跟踪,默认为开启
- wechat_applet_track: 当前页面载入到微信小程序的
<web-view>
中,所有 web 对应的配置的行为跟踪都会调用微信小程序 SDK 的行为跟踪,默认为开启。
示例:
// 关闭 web 跟踪
_ha("create", "PROJECT ID", {
web_track: false,
});
例如以下示例:
_ha("send", "action", "action-name", {
key1: "value",
key2: [1, 2, 3, "a", "b", "c"],
key3: [{ a: 1, b: 2 }, { a: 3, b: 4 }, 123, true, "abc"],
key4: { a: 1, b: 2, c: [1, 2, 3] },
});
- key1, 是在 1.12.3 之前的版本中就支持 。
- key2, key3, key4 是在本次版本中新增支持, 会把参数值统一转 json 字符串,然后再 base64url 处理,格式: base64(JSON.stringify(value))。
- 如果在自定义属性中存在 key3 与 key4 这种值,则在 API 参数中 添加一个参数
_typed
, 值的格式为 base64({"p_key3":"json","p_key4":"json"})。
- identify 支持 ['muid', 'uid', 'unionid', 'wx_id', 'alipay_id', 'cust_id']
- identify 支持 localStorage 缓存
- identify 多次设置,支持参数合并与覆盖
- 调整热力图参数 el_path 的规则,填写序号,删除 className
- 调整调整热力图参数 e_x, e_y 鼠标坐标相对于被点击元素的相对坐标(百分比,0-100)
- 调整滚动事件的监听逻辑,默认间隔根据业务需要调整为 2000
- 滚动事件触发时不补发已过视图范围的值
- 修改 Error 事件跟踪逻辑,只有存在 errorMessage 的异常才发生跟踪请求
新增功能,支持系统事件的跟踪
_ha("create", "PROJECT-001", {
scroll_event: true,
scroll_gap: 500,
});
- scroll_event 开启滚动事件跟踪,默认为开启。
- scroll_gap 滚动间隔,超过间隔发送一个请求,默认为 500 像素。
API 参数
- type = 'act' // 行为跟踪
- act_name = '_scroll' // 行为名称为 scroll
- p__scroll_len = 3200 // 页面可滚动高度
- p__scroll_i = 500 // 当前滚动位置
注意事项:
- 1.当滚动过的区域,只会发送一个请求,再一次滚动到该区域时候,不触发重复请求。
- 2.滚动到页面底部的时候发送一个请求。
_ha("create", "PROJECT-001", {
error_event: true,
});
- error_event 开启错误日志跟踪,默认为关闭。
API 参数
- type = 'act' // 行为跟踪
- act_name = '_error' // 行为名称为 error
- p__err_msg = 'Uncaught ReferenceError: node is not defined' // 错误信息
通过 visibilitychange 事件可以监听页面 visible 与 hidden 状态
_ha("create", "PROJECT-001", {
visibility_event: true,
});
API 参数
visible
- type = 'act' // 行为跟踪
- act_name = '_visible' // 行为名称
hidden
- type = 'act' // 行为跟踪
- act_name = '_hidden' // 行为名称
- 改进获取 title 的逻辑,如果 document.title 取不到就通过 getElementsByTagName 取。
- 修复 lt 参数过大, navigationStart 在有些浏览器取值为 0 的情况 [merge_requests/1]。
- 在 create API 设置
encode:true
则开启编码,默认为 false
_ha("create", "PROJECT-001", {
encode: true,
});
- 除了以下, 其他所有参数都做 base64 处理, 参数名为 _d
Nginx 需要的参数
_t=i|r|c|m // 目前 SDK 没用的
_z
_hid
jsonp
后端计算需要的参数
_ua
_inst
在 api 请求中,新增 lt 参数,记录网页响应需要的时间
在第一方域名下,把 _hid 存储到 cookie 和 localStorage 中,然后通过 queryString 参数的方式传递
支持热图渲染功能
- 在 create api 中添加
heatmap_url
参数, 默认为 //analytics.hypers.com.cn/hwt-heatmap.js
- 判断当前跟踪页面的
url
的 queryString 中是否存在 _hwt_addon=heatmap
, 如果存在则在当前跟踪页面中载入 `heatmap_url 配置的资源
_ha("create", "PROJECT-001", {
auto_track: true,
heatmap: true,
heatmap_url: "//analytics.hypers.com.cn/hwt-heatmap.js",
});
由于新版的浏览器都支持 Referrer 模式可配置,导致有些网站设置了 Referrer-Policy: origin 以后,
我们就 HTTP Headers 中就拿不到当前访问页面的 URL, 所以本次版本的更新就是通过 js 获取到当前页面地址
然后通过 url 参数传递。
如果在用户在部码的时候自己设置了 url , 则会覆盖默认的 url. 例如:
_ha("send", "pageview", {
url: "/login.html",
});
相关资料
_ha("create", "PROJECT-001", {
auto_track: true,
});
['click','submit']
['a', 'button', 'img', 'input', 'form']
在元素上添加 class='hwt-no-track'
type = evt
e_auto = 1
// e_heatmap = 1
e_x = 100
e_y = 200
el_text = 预约成功
el_tag = a
el_href = http://www.hypers.com
el_path = body>div.content>a#btn-submit.btn
- 删除 iframeStorage 相关代码
- 删除 has_cache 参数
- 修改 identify 接口,支持传递对象, 用于关联用户特征
_ha("identify", {
wx_id: "afdfdre234123534232",
email: "1234567@qq.com",
qq: "1234567",
});
在 hwt 发送请求的时候加入全局参数 inst ,为了隔离各个客户之间的日志
在手机 APP 中广告点击后,会跳转到广告的到达页面,这个页面时部署的 hwt 的监测代码,同时会把 APP 中获取到手机 MMA 相关信息通过 query string 方式传递过来。 在 hwt 中,需要把这些参数进行处理在传递到 HWT Tracker 服务器。
- 所有的参数映射:
- os,h0
- imei ,h1
- androidid ,h2
- androidid1 ,h3
- aaid ,h4
- mac ,h5
- mac1 ,h6
- idfa ,h7
- openudid ,h8
- duid ,h9
- 当有以上任意参数,则传递参数
_z=_
为了不进行 302 跳转
- 当有以上任意参数,则传递参数
cross=1
为了标识当前请求是手机 APP 中跳过来的
- 以上所有参数都存储在 localstorage 中,如果 query string 参数有更新,将全部覆盖 localstorage 缓存的值,页面中的所有请求,包括 pv , act, 都需要把 localstorage 中缓存的数据,提交个 tracker 服务器。
- 修复, 针对 nginx 强制 https,导致 iframeStorage 超时的问题。
- 删除“点击图”相关代码逻辑
- 为了适配微信上的网页需要传递
uid
的时候,添加一个参数 _z=_
, 这个参数主要是计算端需要.
- Nginx 的逻辑是当没有 cookie 的情况下就会产生一个 302 的请求,同时增加
_z=_
参数, 按照这个逻辑计算端会删除一条日志来避免多一次的重复请求。 但是当有 uid
这个参数的情况下,计算端的逻辑就变了,不删除多余请求的日志,导致 pv 量变大。
- 所有现在的解决办法是,在前端请求的时候,把 Nginx 的工作给做了,当有
uid
的时候加一个 _z=_
参数,这样 Nginx 就不请求一次 302 请求
- 这个补丁再后续, 计算端修复逻辑以后,在删除
_z=_
参数的配置
- 点击图参数 srceen 改为 screen
- 点击图参数_v 改为 v
- hwt send pageview 请求中获取_hid
- hwt 请求日志记录(用于自动化测试脚本与 HWT-Checker 浏览器标签工具)
- hwt send action api 参数修改
- hwt 支持 SPA 网站
- hwt 支持行为事件
- hwt 修改安装代码
- hwt 新增参数(title char url sd sr 等等参数)
- hwt 添加 api 请求类型 pv ,clickmap ,action
- hwt 修改过点击图请求路径至 /hwt
- hwt 修复 1.3 版本中存在的 bug
- 添加点击图功能,可以通过监测配置参数 ENABLE_CLICKMAP 与_ha("enable","clickmap")两种方式开启点击图;
- 监测请求添加参数_v,标识当前 js 版本;
- 新增全局变量 HypersAnalyticsObject 和_ha
- 新增 compatible 方法,适配 URL(http://|https://|//) ; 适配 API_URL 后缀(/hwt?|/| )
- 废弃_hwt_hwtTQ 和_hwtLoading 全局变量,同时兼容低版本 js 对接代码
- 废弃 hwtTracker 方法
- 默认开启 Referrer 功能,传递 ref 参数;
- 修改 js 对接代码检测配置参数,默认只需要配置 UA;
- 其他代码及加载流程优化
- 采用 uglify 混淆压缩,从上一个版本 7.8kb 缩小至 5.5kb;
- 对 referrer 处理:gbk 字符验证,中文字符 utf 编码,referrer 二次编码;
- 新增 url 参数 ie: ie=utf-8,标识 referrer 中的中文关键字是 utf-8 编码;
- 新增私有对象_conf,配置资源参数及版本号;
- 新增 extend 方法,继承对象;
- 其他代码优化。