@fle-sdk/event-tracking-web 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +366 -2
- package/lib/index.esm.js +1072 -309
- package/lib/index.esm.min.js +1 -1
- package/lib/index.js +2575 -1812
- package/lib/index.min.js +1 -1
- package/lib/types/index.d.ts +87 -11
- package/lib/types/tools.d.ts +2 -0
- package/lib/types/type.d.ts +93 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> **构建用户数据体系,让用户行为数据发挥深远的价值。**
|
|
2
2
|
|
|
3
|
-
**当前版本**: v1.2.
|
|
3
|
+
**当前版本**: v1.2.4
|
|
4
4
|
|
|
5
5
|
## 前言
|
|
6
6
|
|
|
@@ -204,6 +204,15 @@ WebTracking
|
|
|
204
204
|
| batchSend | boolean | 是否启用批量发送 | 否 | false |
|
|
205
205
|
| batchInterval | number | 批量发送间隔时间(ms) | 否 | 5000 |
|
|
206
206
|
| batchMaxSize | number | 批量发送最大数量 | 否 | 10 |
|
|
207
|
+
| trackPartKeyClick | boolean | 是否对带有 data-part-key 属性的元素点击进行上报(即使 autoTrack 为 false) | 否 | false |
|
|
208
|
+
| pendingRequestsMaxSize | number | 待发送请求队列最大数量(防止内存溢出) | 否 | 50 |
|
|
209
|
+
| sendMethod | string | 数据发送方式:auto(自动选择)、xhr(XMLHttpRequest)、beacon(sendBeacon) | 否 | auto |
|
|
210
|
+
| autoTrackPageDurationInterval | boolean | 是否定时上报页面停留时长 | 否 | false |
|
|
211
|
+
| pageDurationInterval | number | 定时上报页面停留时长的间隔时间(毫秒) | 否 | 30000 |
|
|
212
|
+
| autoTrackExposure | boolean | 是否启用曝光埋点 | 否 | false |
|
|
213
|
+
| exposureThreshold | number | 曝光进入可视区判定阈值(0-1之间) | 否 | 0.5 |
|
|
214
|
+
| exposureTime | number | 曝光可见停留时长阈值(毫秒) | 否 | 500 |
|
|
215
|
+
| exposureNum | number | 同一元素允许上报的最大曝光次数(不传则不限制) | 否 | 不限制 |
|
|
207
216
|
| pageKey | string | 自定义页面唯一标识,如果不传则自动从路由获取 | 否 | 自动生成 |
|
|
208
217
|
|
|
209
218
|
#### 例子
|
|
@@ -266,6 +275,15 @@ export default App;
|
|
|
266
275
|
| batchSend | boolean | 是否启用批量发送 | 否 | false |
|
|
267
276
|
| batchInterval | number | 批量发送间隔时间(ms) | 否 | 5000 |
|
|
268
277
|
| batchMaxSize | number | 批量发送最大数量 | 否 | 10 |
|
|
278
|
+
| trackPartKeyClick | boolean | 是否对带有 data-part-key 属性的元素点击进行上报(即使 autoTrack 为 false) | 否 | false |
|
|
279
|
+
| pendingRequestsMaxSize | number | 待发送请求队列最大数量(防止内存溢出) | 否 | 50 |
|
|
280
|
+
| sendMethod | string | 数据发送方式:auto(自动选择)、xhr(XMLHttpRequest)、beacon(sendBeacon) | 否 | auto |
|
|
281
|
+
| autoTrackPageDurationInterval | boolean | 是否定时上报页面停留时长 | 否 | false |
|
|
282
|
+
| pageDurationInterval | number | 定时上报页面停留时长的间隔时间(毫秒) | 否 | 30000 |
|
|
283
|
+
| autoTrackExposure | boolean | 是否启用曝光埋点 | 否 | false |
|
|
284
|
+
| exposureThreshold | number | 曝光进入可视区判定阈值(0-1之间) | 否 | 0.5 |
|
|
285
|
+
| exposureTime | number | 曝光可见停留时长阈值(毫秒) | 否 | 500 |
|
|
286
|
+
| exposureNum | number | 同一元素允许上报的最大曝光次数(不传则不限制) | 否 | 不限制 |
|
|
269
287
|
| pageKey | string | 自定义页面唯一标识,如果不传则自动从路由获取 | 否 | 自动生成 |
|
|
270
288
|
|
|
271
289
|
#### 例子
|
|
@@ -588,6 +606,64 @@ const Index = () => {
|
|
|
588
606
|
export default Index;
|
|
589
607
|
```
|
|
590
608
|
|
|
609
|
+
### TrackPageDuration
|
|
610
|
+
|
|
611
|
+
> 手动上报页面停留时长。支持自定义时长或自动计算时长。
|
|
612
|
+
|
|
613
|
+
#### 参数
|
|
614
|
+
|
|
615
|
+
| 参数名 | type | 描述 | 是否必填 | 默认值 |
|
|
616
|
+
| --------- | ------------------------- | ------------------------------------------------------------ | -------- | ------ |
|
|
617
|
+
| duration | number | 自定义停留时长(毫秒),如果不传则自动计算 | 否 | - |
|
|
618
|
+
| options | TrackPageDurationOptions | 配置选项 | 否 | - |
|
|
619
|
+
| resetStartTime | boolean | 是否重置起始时间(手动上报后重置,定时上报不重置) | 否 | true |
|
|
620
|
+
|
|
621
|
+
#### TrackPageDurationOptions
|
|
622
|
+
|
|
623
|
+
| 参数名 | type | 描述 | 是否必填 | 默认值 |
|
|
624
|
+
| --------- | --------------------- | ------------------------------------------------------------ | -------- | ------ |
|
|
625
|
+
| desc | string | 自定义描述 | 否 | "Web 页面浏览时长" |
|
|
626
|
+
| business | {[key: string]: any} | 自定义业务参数 | 否 | {} |
|
|
627
|
+
| pageKey | string | 自定义页面唯一标识 | 否 | 当前页面标识 |
|
|
628
|
+
| header | {[key: string]: any} | 自定义请求头 | 否 | - |
|
|
629
|
+
|
|
630
|
+
#### 例子
|
|
631
|
+
|
|
632
|
+
```jsx
|
|
633
|
+
import React, { useEffect } from "react";
|
|
634
|
+
import WebTracking from "@fle-sdk/event-tracking-web";
|
|
635
|
+
|
|
636
|
+
const Index = () => {
|
|
637
|
+
// 手动上报页面停留时长(自动计算)
|
|
638
|
+
const handleReportDuration = () => {
|
|
639
|
+
WebTracking.trackPageDuration()
|
|
640
|
+
.then((res) => console.log("上报成功", res))
|
|
641
|
+
.catch((err) => console.log("上报失败", err));
|
|
642
|
+
};
|
|
643
|
+
|
|
644
|
+
// 手动上报页面停留时长(自定义时长)
|
|
645
|
+
const handleReportCustomDuration = () => {
|
|
646
|
+
WebTracking.trackPageDuration(5000, {
|
|
647
|
+
desc: "自定义时长上报",
|
|
648
|
+
business: {
|
|
649
|
+
customField: "value",
|
|
650
|
+
},
|
|
651
|
+
})
|
|
652
|
+
.then((res) => console.log("上报成功", res))
|
|
653
|
+
.catch((err) => console.log("上报失败", err));
|
|
654
|
+
};
|
|
655
|
+
|
|
656
|
+
return (
|
|
657
|
+
<div className="index-wrap">
|
|
658
|
+
<button onClick={handleReportDuration}>上报停留时长</button>
|
|
659
|
+
<button onClick={handleReportCustomDuration}>上报自定义时长</button>
|
|
660
|
+
</div>
|
|
661
|
+
);
|
|
662
|
+
};
|
|
663
|
+
|
|
664
|
+
export default Index;
|
|
665
|
+
```
|
|
666
|
+
|
|
591
667
|
## 四、完整参数明细
|
|
592
668
|
|
|
593
669
|
### 4.1 request 参数明细
|
|
@@ -685,6 +761,7 @@ const newDeviceId = WebTracking.resetDeviceId();
|
|
|
685
761
|
4. 批量发送失败时,数据会自动重新加入队列,避免数据丢失
|
|
686
762
|
5. **数据持久化**:队列数据会自动保存到 LocalStorage,页面刷新或关闭后数据不会丢失
|
|
687
763
|
6. **自动恢复**:重新打开页面时,会自动从 LocalStorage 恢复未发送的数据并继续发送
|
|
764
|
+
7. **数据格式**:批量发送时直接发送数组,不包装在 `events` 参数中
|
|
688
765
|
|
|
689
766
|
#### 使用示例
|
|
690
767
|
|
|
@@ -699,6 +776,31 @@ WebTracking.init({
|
|
|
699
776
|
});
|
|
700
777
|
```
|
|
701
778
|
|
|
779
|
+
#### 数据格式说明
|
|
780
|
+
|
|
781
|
+
批量发送时,数据直接以数组形式发送,格式如下:
|
|
782
|
+
|
|
783
|
+
```json
|
|
784
|
+
[
|
|
785
|
+
{
|
|
786
|
+
"event": "CustomTrack",
|
|
787
|
+
"desc": "自定义上报事件",
|
|
788
|
+
"itemKey": "218844.page1.event1",
|
|
789
|
+
"requestTime": 1709524231171,
|
|
790
|
+
"deviceId": "1dd539cdea9332ebb9d5c087f9d4471f",
|
|
791
|
+
"privateParamMap": { ... }
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
"event": "CustomTrack",
|
|
795
|
+
"desc": "自定义上报事件",
|
|
796
|
+
"itemKey": "218844.page1.event2",
|
|
797
|
+
"requestTime": 1709524231172,
|
|
798
|
+
"deviceId": "1dd539cdea9332ebb9d5c087f9d4471f",
|
|
799
|
+
"privateParamMap": { ... }
|
|
800
|
+
}
|
|
801
|
+
]
|
|
802
|
+
```
|
|
803
|
+
|
|
702
804
|
#### 数据持久化说明
|
|
703
805
|
|
|
704
806
|
- **自动保存**:每次添加数据到队列时,会自动保存到 LocalStorage
|
|
@@ -745,11 +847,273 @@ SDK 会自动过滤敏感字段,保护用户隐私。默认会过滤以下字
|
|
|
745
847
|
|
|
746
848
|
如果需要自定义敏感字段列表,可以在代码中扩展 `filterSensitiveData` 方法。
|
|
747
849
|
|
|
850
|
+
### 5.5 数据发送方式
|
|
851
|
+
|
|
852
|
+
SDK 支持三种数据发送方式,可通过 `sendMethod` 参数配置。
|
|
853
|
+
|
|
854
|
+
#### 配置参数
|
|
855
|
+
|
|
856
|
+
- `sendMethod`: 数据发送方式(默认:auto)
|
|
857
|
+
- `auto`: 自动选择(推荐)
|
|
858
|
+
- 优先使用 `sendBeacon`(页面卸载时、无自定义请求头时)
|
|
859
|
+
- 否则使用 `XMLHttpRequest`
|
|
860
|
+
- `xhr`: 强制使用 `XMLHttpRequest`
|
|
861
|
+
- `beacon`: 强制使用 `sendBeacon`
|
|
862
|
+
|
|
863
|
+
#### 工作原理
|
|
864
|
+
|
|
865
|
+
1. **auto 模式(推荐)**:
|
|
866
|
+
- 支持自定义请求头时使用 `XMLHttpRequest`
|
|
867
|
+
- 不支持自定义请求头时优先使用 `sendBeacon`
|
|
868
|
+
- 页面卸载时自动切换到 `sendBeacon` 确保数据发送
|
|
869
|
+
- `sendBeacon` 失败时自动降级到 `XMLHttpRequest`
|
|
870
|
+
|
|
871
|
+
2. **xhr 模式**:
|
|
872
|
+
- 始终使用 `XMLHttpRequest` 发送数据
|
|
873
|
+
- 支持自定义请求头
|
|
874
|
+
- 支持超时控制
|
|
875
|
+
- 页面卸载时可能被取消
|
|
876
|
+
|
|
877
|
+
3. **beacon 模式**:
|
|
878
|
+
- 始终使用 `sendBeacon` 发送数据
|
|
879
|
+
- 不支持自定义请求头
|
|
880
|
+
- 页面卸载时也能可靠发送
|
|
881
|
+
- 无法获取发送结果
|
|
882
|
+
|
|
883
|
+
#### 使用示例
|
|
884
|
+
|
|
885
|
+
```jsx
|
|
886
|
+
WebTracking.init({
|
|
887
|
+
appKey: "218844",
|
|
888
|
+
serverUrl: "https://xxx/push",
|
|
889
|
+
// 使用自动模式(推荐)
|
|
890
|
+
sendMethod: "auto",
|
|
891
|
+
// 或者强制使用 XMLHttpRequest
|
|
892
|
+
// sendMethod: "xhr",
|
|
893
|
+
// 或者强制使用 sendBeacon
|
|
894
|
+
// sendMethod: "beacon",
|
|
895
|
+
});
|
|
896
|
+
```
|
|
897
|
+
|
|
898
|
+
### 5.6 元素点击追踪
|
|
899
|
+
|
|
900
|
+
SDK 提供了灵活的元素点击追踪方式,支持全埋点和部分埋点两种模式。
|
|
901
|
+
|
|
902
|
+
#### 配置参数
|
|
903
|
+
|
|
904
|
+
- `autoTrack`: 是否开启全埋点(包括页面浏览、元素点击事件自动上报)
|
|
905
|
+
- `trackPartKeyClick`: 是否对带有 `data-part-key` 属性的元素点击进行上报(即使 `autoTrack` 为 false)
|
|
906
|
+
|
|
907
|
+
#### 工作原理
|
|
908
|
+
|
|
909
|
+
1. **全埋点模式(autoTrack: true)**:
|
|
910
|
+
- 自动追踪所有元素点击事件
|
|
911
|
+
- 自动上报页面浏览事件
|
|
912
|
+
- 支持单页面应用路由变化追踪
|
|
913
|
+
|
|
914
|
+
2. **部分埋点模式(trackPartKeyClick: true)**:
|
|
915
|
+
- 只追踪带有 `data-part-key` 属性的元素点击
|
|
916
|
+
- 适用于需要精确控制埋点范围的场景
|
|
917
|
+
- 可与 `autoTrack: false` 配合使用
|
|
918
|
+
|
|
919
|
+
#### 使用示例
|
|
920
|
+
|
|
921
|
+
```jsx
|
|
922
|
+
// 全埋点模式:追踪所有点击
|
|
923
|
+
WebTracking.init({
|
|
924
|
+
appKey: "218844",
|
|
925
|
+
serverUrl: "https://xxx/push",
|
|
926
|
+
autoTrack: true,
|
|
927
|
+
});
|
|
928
|
+
|
|
929
|
+
// 部分埋点模式:只追踪带有 data-part-key 的元素
|
|
930
|
+
WebTracking.init({
|
|
931
|
+
appKey: "218844",
|
|
932
|
+
serverUrl: "https://xxx/push",
|
|
933
|
+
autoTrack: false,
|
|
934
|
+
trackPartKeyClick: true,
|
|
935
|
+
});
|
|
936
|
+
|
|
937
|
+
// HTML 中使用 data-part-key
|
|
938
|
+
<button data-part-key="recharge_btn" data-desc="显示充值弹窗">
|
|
939
|
+
充值
|
|
940
|
+
</button>
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
### 5.7 页面停留时长定时上报
|
|
944
|
+
|
|
945
|
+
SDK 支持定时上报页面停留时长,适用于需要持续监控用户停留时长的场景。
|
|
946
|
+
|
|
947
|
+
#### 配置参数
|
|
948
|
+
|
|
949
|
+
- `autoTrackPageDurationInterval`: 是否定时上报页面停留时长(默认:false)
|
|
950
|
+
- `pageDurationInterval`: 定时上报间隔时间,单位毫秒(默认:30000,即30秒)
|
|
951
|
+
|
|
952
|
+
#### 工作原理
|
|
953
|
+
|
|
954
|
+
1. 启用定时上报后,SDK 会启动定时器
|
|
955
|
+
2. 每隔指定时间间隔自动上报页面停留时长
|
|
956
|
+
3. 只在页面可见时上报(避免后台上报)
|
|
957
|
+
4. 定时上报不重置起始时间,数据工程师会进行数据清洗
|
|
958
|
+
5. 页面卸载时自动停止定时器
|
|
959
|
+
|
|
960
|
+
#### 使用示例
|
|
961
|
+
|
|
962
|
+
```jsx
|
|
963
|
+
WebTracking.init({
|
|
964
|
+
appKey: "218844",
|
|
965
|
+
serverUrl: "https://xxx/push",
|
|
966
|
+
// 启用定时上报页面停留时长
|
|
967
|
+
autoTrackPageDurationInterval: true,
|
|
968
|
+
// 每30秒上报一次
|
|
969
|
+
pageDurationInterval: 30000,
|
|
970
|
+
});
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
#### 手动上报 vs 定时上报
|
|
974
|
+
|
|
975
|
+
- **手动上报**:使用 `trackPageDuration()` 方法,适合在特定时机上报(如页面离开时)
|
|
976
|
+
- **定时上报**:使用配置项自动上报,适合持续监控场景
|
|
977
|
+
|
|
978
|
+
两种方式可以同时使用,互不冲突。
|
|
979
|
+
|
|
980
|
+
### 5.8 元素曝光埋点
|
|
981
|
+
|
|
982
|
+
SDK 支持自动监听元素曝光事件,适用于需要追踪元素可见性的场景(如商品卡片曝光、广告曝光等)。
|
|
983
|
+
|
|
984
|
+
#### 触发条件
|
|
985
|
+
|
|
986
|
+
仅对包含 `data-exposure="true"` 的 DOM 元素做曝光监听与上报(区分大小写,建议统一为字符串 "true")。
|
|
987
|
+
|
|
988
|
+
#### 配置参数
|
|
989
|
+
|
|
990
|
+
- `autoTrackExposure`: 是否启用曝光埋点(默认:false)
|
|
991
|
+
- `exposureThreshold`: 曝光进入可视区判定阈值,0-1之间(默认:0.5)
|
|
992
|
+
- `exposureTime`: 曝光可见停留时长阈值,单位毫秒(默认:500)
|
|
993
|
+
- `exposureNum`: 同一元素允许上报的最大曝光次数(默认:不限制)
|
|
994
|
+
|
|
995
|
+
#### 工作原理
|
|
996
|
+
|
|
997
|
+
1. 使用 `IntersectionObserver` API 判定元素是否进入可视区
|
|
998
|
+
2. 元素进入可视区后开始计时
|
|
999
|
+
3. 元素离开可视区时,如果可见时长达到 `exposureTime` 阈值,则上报曝光事件
|
|
1000
|
+
4. 如果设置了 `exposureNum`,同一元素超过该次数后不再上报
|
|
1001
|
+
|
|
1002
|
+
#### 上报参数提取
|
|
1003
|
+
|
|
1004
|
+
从目标元素(或其祖先节点,按"就近原则")提取所有 `data-*` 属性作为埋点业务参数,规则如下:
|
|
1005
|
+
|
|
1006
|
+
- 属性名从 `data-xxx-yyy` 转为 `xxxYyy`(camelCase)
|
|
1007
|
+
- 示例:`data-goods-id` → `goodsId`,`data-list-id` → `listId`
|
|
1008
|
+
- 排除属性:`data-exposure`、`data-part-key`、`data-desc`
|
|
1009
|
+
|
|
1010
|
+
#### 使用示例
|
|
1011
|
+
|
|
1012
|
+
```jsx
|
|
1013
|
+
WebTracking.init({
|
|
1014
|
+
appKey: "218844",
|
|
1015
|
+
serverUrl: "https://xxx/push",
|
|
1016
|
+
// 启用曝光埋点
|
|
1017
|
+
autoTrackExposure: true,
|
|
1018
|
+
// 元素进入可视区 50% 时判定为可见
|
|
1019
|
+
exposureThreshold: 0.5,
|
|
1020
|
+
// 元素连续可见 500ms 才算一次有效曝光
|
|
1021
|
+
exposureTime: 500,
|
|
1022
|
+
// 同一元素最多上报 3 次曝光
|
|
1023
|
+
exposureNum: 3,
|
|
1024
|
+
});
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1027
|
+
#### HTML 使用示例
|
|
1028
|
+
|
|
1029
|
+
```jsx
|
|
1030
|
+
<div className="goods-list">
|
|
1031
|
+
<div
|
|
1032
|
+
data-exposure="true"
|
|
1033
|
+
data-part-key="goods_card"
|
|
1034
|
+
data-desc="商品卡片曝光"
|
|
1035
|
+
data-goods-id="12345"
|
|
1036
|
+
data-goods-name="测试商品"
|
|
1037
|
+
data-list-id="home_list"
|
|
1038
|
+
>
|
|
1039
|
+
<img src="goods.jpg" alt="商品图片" />
|
|
1040
|
+
<h3>商品名称</h3>
|
|
1041
|
+
</div>
|
|
1042
|
+
|
|
1043
|
+
<div
|
|
1044
|
+
data-exposure="true"
|
|
1045
|
+
data-part-key="ad_banner"
|
|
1046
|
+
data-desc="广告横幅曝光"
|
|
1047
|
+
data-ad-id="999"
|
|
1048
|
+
data-ad-position="top"
|
|
1049
|
+
>
|
|
1050
|
+
<img src="ad.jpg" alt="广告图片" />
|
|
1051
|
+
</div>
|
|
1052
|
+
</div>
|
|
1053
|
+
```
|
|
1054
|
+
|
|
1055
|
+
#### 上报数据示例
|
|
1056
|
+
|
|
1057
|
+
```json
|
|
1058
|
+
{
|
|
1059
|
+
"event": "WebExposure",
|
|
1060
|
+
"desc": "商品卡片曝光",
|
|
1061
|
+
"itemKey": "218844.home_page.goods_card",
|
|
1062
|
+
"requestTime": 1709524231171,
|
|
1063
|
+
"deviceId": "1dd539cdea9332ebb9d5c087f9d4471f",
|
|
1064
|
+
"privateParamMap": {
|
|
1065
|
+
"business": {
|
|
1066
|
+
"goodsId": "12345",
|
|
1067
|
+
"goodsName": "测试商品",
|
|
1068
|
+
"listId": "home_list"
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
#### 注意事项
|
|
1075
|
+
|
|
1076
|
+
1. **浏览器兼容性**:需要浏览器支持 `IntersectionObserver` API,不支持时会自动禁用曝光埋点
|
|
1077
|
+
2. **性能优化**:SDK 会自动去重,避免重复监听同一元素
|
|
1078
|
+
3. **动态元素**:如果页面中有动态添加的元素,需要手动调用 `observeExposureElements()` 方法(暂未公开)
|
|
1079
|
+
4. **数据提取**:`data-*` 属性会从目标元素向上遍历到 BODY 标签,按"就近原则"提取
|
|
1080
|
+
|
|
748
1081
|
---
|
|
749
1082
|
|
|
750
1083
|
## 六、版本更新日志
|
|
751
1084
|
|
|
752
|
-
### v1.2.
|
|
1085
|
+
### v1.2.4 (最新)
|
|
1086
|
+
|
|
1087
|
+
- ✨ 新增元素曝光埋点功能
|
|
1088
|
+
- `autoTrackExposure` - 是否启用曝光埋点
|
|
1089
|
+
- `exposureThreshold` - 曝光进入可视区判定阈值(0-1之间)
|
|
1090
|
+
- `exposureTime` - 曝光可见停留时长阈值(毫秒)
|
|
1091
|
+
- `exposureNum` - 同一元素允许上报的最大曝光次数
|
|
1092
|
+
- 使用 `IntersectionObserver` API 判定元素可见性
|
|
1093
|
+
- 自动提取 `data-*` 属性作为业务参数
|
|
1094
|
+
- 支持自定义曝光次数限制
|
|
1095
|
+
|
|
1096
|
+
### v1.2.3
|
|
1097
|
+
|
|
1098
|
+
- 🐛 修复批量发送数据格式问题
|
|
1099
|
+
- 批量发送时直接发送数组,不再包装在 `events` 参数中
|
|
1100
|
+
- ✨ 新增页面停留时长手动上报功能
|
|
1101
|
+
- `trackPageDuration()` - 手动上报页面停留时长
|
|
1102
|
+
- 支持自定义时长或自动计算时长
|
|
1103
|
+
- 支持自定义页面标识和业务参数
|
|
1104
|
+
- ✨ 新增页面停留时长定时上报功能
|
|
1105
|
+
- `autoTrackPageDurationInterval` - 是否定时上报页面停留时长
|
|
1106
|
+
- `pageDurationInterval` - 定时上报间隔时间(默认30秒)
|
|
1107
|
+
- 只在页面可见时上报,避免后台上报
|
|
1108
|
+
- ✨ 新增数据发送方式配置
|
|
1109
|
+
- `sendMethod` - 支持 auto、xhr、beacon 三种模式
|
|
1110
|
+
- auto 模式自动选择最佳发送方式(推荐)
|
|
1111
|
+
- 页面卸载时自动使用 sendBeacon 确保数据发送
|
|
1112
|
+
- ✨ 新增元素点击追踪配置
|
|
1113
|
+
- `trackPartKeyClick` - 只追踪带有 data-part-key 属性的元素点击
|
|
1114
|
+
- 支持与 autoTrack 配合使用,实现灵活的埋点策略
|
|
1115
|
+
|
|
1116
|
+
### v1.2.0
|
|
753
1117
|
|
|
754
1118
|
- ✨ 新增设备 ID 管理功能(基于浏览器指纹技术)
|
|
755
1119
|
- `getDeviceId()` - 获取设备唯一标识
|