You need to enable JavaScript to run this app.
导航
Web/JS SDK分类功能
最近更新时间:2024.11.15 11:04:37首次发布时间:2024.04.30 15:17:24

1. Web/JS 停留时长功能

1.1 停留时长介绍

页面停留(浏览)时长是网站分析中很常见的一个指标,用于反映用户在某些页面上浏览时间的长短,体现了用户对网站的黏性。

1.2 功能开启

请先参考Web/JS SDK 集成 接入SDK,并在初始化时开启停留时长功能。

window.collectEvent('init', {
    // ...... 其他初始化配置
    enable_stay_duration: true // true:开启停留时长
});

1.3 上报事件介绍

1.3.1 predefine_page_alive

开启功能之后,predefine_page_alive事件会在页面活跃状态下,每分钟定时上报一次,或者在切换为非活跃状态时上报一次。
活跃状态:页面处于可视,或者可操作的状态。
非活跃状态:页面处于后台,隐藏,最小化等不可视状态。
事件上报参数:

参数

说明

title

string,页面title

url

string,页面地址

url_path

string,页面路径

duration

number,毫秒,正常是60000,在切换状态时小于等于60000

1.3.2 predefine_page_close

开启功能之后,会记录用户每次【进入页面,切换状态,离开页面】的时间戳,然后在离开或者关闭页面的时候上报predefine_page_close事件,将每一段【活跃状态】的时长相加作为整体的使用时长。

参数

说明

title

string,页面标题

url

string,页面url

url_path

string,页面url的path

duration

number, ms, 用户在活跃状态下的停留时长之和

active_times

number,用户在活跃状态的次数,默认为1

total_duration

number,用户访问页面,从开始到关闭的整个时长

1.4 重置时长

当你的页面是单页应用,点击页面上的tab访问了其他页面时,需要将停留时长进行重置。

window.collectEvent('resetStayDuration', url_path?: string, title?: string, url?: string);
// 参数可不传,不传则取默认当前页面的值

注:此API的含义,重置停留时长。假设你初始访问了页面A,后续点击页面上的按钮,将要访问页面B,此时可调用此API,传入B页面的相关参数。调用此API会立刻发起alive和close事件(事件的内容为A页面的参数和你访问A页面的时长)。而B页面的时长则需要等到B页面关闭,或者你再次调用此API(将要访问页面C)才会真正上报。

1.5 自动重置时长

当路由发生变化时,自动重置停留时长,即SDK会自动调用resetStayDuration)

window.collectEvent('init', {
   spa: true
});

如果你觉得停留时长自动重置时alive或者close埋点获取的参数不准确,或者希望自己控制此行为,可通过下面的设置关闭自动路由监听。

window.collectEvent('init', {
   disable_route_report: true
});

或者通过在每次进入到新的页面时,调用下面的API来修复参数的问题。

window.collectEvent('resetStayParams', url_path?: string, title?: string, url?: string);

1.6 验证埋点

由于停留时长大多数情况下,会在页面离开或者关闭时触发,所以SDK使用了sendBeacon api 来发送,此请求你需要在浏览器控制台的network(网络)分类中,选择ALL分类来查看(type类型为ping,非正常请求的xhr)
Image

2. Web/JS 全埋点

2.1 全埋点介绍

相较于自定义埋点,全埋点可以自动监听用户的访问、点击等行为,然后自动上报相关的埋点。

2.2 设置代码

请先参考Web/JS SDK 集成 接入SDK,并在初始化时开启全埋点

window.collectEvent('init', {
    // ...... 其他初始化配置
    autotrack: true
});

2.3 配置说明

autotrack除了可以设置boolean类型外,还支持对象传入。

autotrack内置对象

说明

text

Boolean,是否采集元素的文本,默认采集

svg

Boolean,是否采集svg元素,默认不采集

track_attr

[string],字符串数组,配置点击元素自定义的属性

collect_url

function, 函数,配置是否采集某个页面,返回真会采集当前页面的元素点击事件,返回假表示不采集当前页面,设置这个函数后,内容为空的话,是返回假的。不设置函数默认是采集所有页面。

pv

是否开启全埋点的pv上报,默认true,false则禁用

click

是否开启全埋点的点击上报,默认true,false则禁用

beat

是否开启全埋点滚动心跳上报,默认true,false则禁用

exposure

any, 曝光事件采集,默认false,传入true则开启曝光事件采集,具体请查看下方详细描述

2.3.1 配置示例

window.collectEvent('init', {
    autotrack: {
      text: false, // 不采集元素文本
      svg: true, // 采集svg元素
      track_attr: ['attr1', 'attr2'],
      collect_url: () => {
        if (location.href === 'xxx') {
           // 页面地址是xxx则不采集
           return false
        }
        // 其他页面采集                
        return true
      }
    }
})
window.collectEvent('start')

2.3.2 设置自定义属性

  1. 自定义属性方式一

开启全埋点后,支持自定义属性的采集,代码如下:

window.collectEvent('init', {
    autotrack: {
       track_attr: ['attr1', 'attr2']
    }
})
<div attr1='ss'  attr2='ddd'></div>
// SDK会采集att1 和 attr2的属性和属性值
  1. 自定义属性方式二
window.collectEvent('init', {
   autotrack: {
     custom_attr: 'datastring'
   }
})
<div id="test" datastring="%7B%22id%22%3A2%2C%22name%22%3A3%7D">测试属性采集</div>
datastring的原始值是 
{
  id:2,
  name:3
}

经过encodeURIComponent(JSON.stringify({id:2, name:3})) 填到dom上

2.3.3 设置页面采集

开启全埋点后,支持设置哪些页面需要采集,哪些页面不需要采集

window.collectEvent('init', {
    autotrack: {
      collect_url: () => {
        if (location.href === 'xxx') {
           // 页面地址是xxx则不采集
           return false
        }
        // 其他页面采集                
        return true
      }
    }
})

2.3.4 设置元素采集

如果某个元素本身不会被采集到,可以设置属性让SDK采集到

<div data-tea-container="true"></div>

2.3.5 设置元素不采集

如果某个元素不需要被采集到,可以设置属性让SDK过滤

<div data-tea-ignore="true"></div>

2.3.5 设置曝光采集

window.collectEvent('init', {
    autotrack: {
      exposure: true // 也可以传入对象
      exposure: {
        radio: 0.5 // 元素曝光比例,0-1,默认0.5,即元素展示面积超过50%时曝光
        eventName: '' //可以自定义上报的曝光事件名,默认是bav2b_exposure
      }
    }
})

只有元素含有data-exposure属性,才会对此元素进行曝光。

2.4 全埋点事件

预置事件列表与上报逻辑

全埋点事件列表

事件说明

事件触发机制

bav2b_page

页面浏览事件

页面打开后触发上报

bav2b_click

元素点击事件

点击页面元素后触发上报

bav2b_page_statistics

页面访问事件

页面打开后触发上报

bav2b_beat

页面心跳事件

页面打开,关闭,或者页面滚动停止后500ms后会触发上报

bav2b_exposure

元素曝光事件

需要曝光的元素出现在可视区域内会触发上报

各预置事件的详细说明和相关的事件属性介绍请参见下文。

注意

其中:

  • 页面时长相关属性(refer_page_duration_ms)是记录上一个页面的停留时长,需要依赖用户已经开启了停留时长功能(enable_stay_duration: true,详情请参见上文停留时长功能章节,用户打开页面后开始计时,期间切后台、切tab等操作都会暂停计时,等访问结束跳转到下一个页面时,会把当前累计的时长暂存下来。等到下一个页面时再获取这个时长,作为refer_page_duration_ms的值。
  • 完成数据上报后,如果refer_page类型的属性值为空,可能是因为您没有开启停留时长功能;或者是缓存里没有取到这个值(即上一个页面没有成功暂存下来);其中refer_page_key取的是上一个页面的URL,为空也表示页面的访问来源是直接访问,因此refer_page_key为空。

2.4.1 bav2b_page

页面浏览事件,在页面打开,或者路由变化时上报。上报时机分独立页面和SPA(单页应用),独立页面的话则在页面打开后,SDK初始化完成后上报一次。如果是SPA页面,除了SDK初始化完成后上报一次,在点击切换页面时也会上报一次。主要采集的数据为页面浏览的一些参数,用于分析页面浏览行为。
Image

参数

说明

is_html

默认为1

is_back

是否回退产生

page_key

当前页面key,默认值为页面地址

url

当前页面地址

page_title

页面标题

page_path

页面路径

page_host

页面host

page_total_height

页面总高度

page_total_width

页面总宽度

scroll_height

页面滚动条高度

scroll_width

页面滚动条宽度

page_manual_key

页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注

page_start_ms

页面打开时间

refer_page_title

上一个页面标题

refer_page_duration_ms

上一个页面访问时长

refer_page_key

上一个页面key

refer_page_manual_key

上一个页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注

is_first_time

是否首次访问

2.4.2 bav2b_click

元素点击事件,在页面发生点击时上报。
Image

参数

说明

is_html

默认为1

page_key

当前页面key,默认值为页面地址

page_title

页面标题

element_path

元素路径

positions

元素位置

element_title

元素标题

element_id

元素id

element_class_name

元素class名

element_type

元素类型

element_width

元素宽度

element_height

元素高度

touch_x

点击位置X坐标

touch_y

点击位置Y坐标

page_start_ms

页面打开时间

since_page_start_ms

点击发生时距离页面打开的时间

page_path

页面标题

page_host

页面host

2.4.3 bav2b_page_statistics

页面访问事件,在页面访问时上报。上报时机为页面打开后,SDK初始化完成后上报一次(独立页面和SPA都只上报一次),采集的数据主要是页面加载耗时、页面宽高等统计信息,用于分析页面加载统计等信息。
Image

参数

说明

is_html

默认为1

page_key

当前页面key,默认值为页面地址

page_title

页面标题

page_manual_key

页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注

page_start_ms

页面打开时间

page_init_cost_ms

页面打开的耗时

refer_page_key

上一个页面key

refer_page_manual_key

上一个页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注

2.4.4 bav2b_beat

页面心跳事件,分别在页面访问,滚动页面后停止500ms,离开页面时上报各上报一次。
Image

参数

说明

is_html

默认为1

page_key

当前页面key,默认值为页面地址

beat_type

beat类型,0:离开页面,1:滚动停止,3:访问页面

page_title

页面标题

page_viewport_width

页面可视窗口宽度

page_viewport_height

页面可视窗口高度

page_total_height

页面总高度

page_total_width

页面总宽度

scroll_height

页面滚动条高度

scroll_width

页面滚动条宽度

page_manual_key

页面manual_key,当前页面manual_key是一个闲置字段,暂无实际意义,您无需关注

page_start_ms

页面打开时间

since_page_start_ms

事件发生时距离页面打开的时间

2.4.5 bav2b_exposure

V5.1.1以上版本支持。

元素曝光事件,当一个元素滚动到可视区域内,且符合曝光比例时,则上报一个曝光事件。在可视区域内的反复滚动,只会算一次,直到移出可视区域后,再滚动出现才会再次曝光。
Image

参数

说明

is_html

默认为1

page_key

当前页面key,默认值为页面地址

page_title

页面标题

element_path

元素路径

positions

元素位置

element_title

元素标题

element_id

元素id

element_class_name

元素class名

element_type

元素类型

element_width

元素宽度

element_height

元素高度

touch_x

点击位置X坐标

touch_y

点击位置Y坐标

page_start_ms

页面打开时间

since_page_start_ms

点击发生时距离页面打开的时间

page_path

页面标题

page_host

页面host

2.5 全埋点采集元素过滤规则

元素类型

是否采集

html,header,body,footer,script,link,ifram,svg等

不采集

div,span,a,p,img,ul,li等

采集

元素nodeType不等于1(非可视元素标签)

不采集

display为none

不采集

点击的元素层级超过2层(有多层子元素)

不采集

当元素层级超过2层,但元素为容器元素(a,button,或者用户指定了标签属性 'teaContainer','data-tea-container')

采集

2.6 产品功能开启

SDK中开启全埋点后,后续实际使用前,您还需在DataFinder控制台查看并确认全埋点的开关已打开。

  • SaaS-云原生和私有化场景:进入到项目中心>项目管理>SDK设置,确保全埋点开关已打开。
  • SaaS-非云原生场景:进入到「数据管理-圈选事件」页面中,将「全埋点数据采集」开关打开即可正常使用。

2.7 曝光埋点使用详细示例

  1. 集成web JS SDK。

  2. 开启曝光埋点。

    window.collectEvent('init', {
       autotrack: {
          exposure: {
            ratio: 0.4 , //0-1 曝光比例
            stay: 500 // 单位ms 停留时长达到500ms时上报
            //以上两个条件可以只设置一个,两个都设置的情况下需要同时满足才上报
            callback: (data) => {
             // 可以修改data,data是曝光上报的属性
              return data
            }
          }
       }
    })
    
  3. 设置要曝光的元素

    <div data-exposure>我是需要曝光的元素</div>
    
  4. 设置修改属性的函数

    window.collectEvent('init', {
       autotrack: {
          exposure: {
            callback: (data) => {
             // 可以修改data,data是曝光上报的属性, 也可以新增
              data.element_class_name = 'sijie'
              return data
            }
          }
       }
    })
    
    还有另外一种通用的方式,元素上有attr1和attr2属性也会采集
    window.collectEvent('init', {
       autotrack: {
          track_attr: ['attr1', 'attr2']
       }
    })
    
    <div attr1='ss'  attr2='ddd'></div>
    
  5. 自定义事件名
    曝光事件名默认:$bav2b_exposure 自定义事件名有2种方式:

    • 全局生效

      window.collectEvent('init', {
         autotrack: {
            exposure: {
              eventName: 'customexposure'
            }
         }
      })
      
    • 绑定元素生效

      // 上报自定义事件 customexposure
      <div data-exposure data-exposure-event="customexposure"></div>
      
  6. exposure_type属性详细介绍

    • $exposure_type:0 首次曝光
    • $exposure_type:3 重复曝光
    • $exposure_type:6 从其他页面返回的曝光
    • $exposure_type:7 后台返回曝光

2.8 滑动埋点使用详细示例

  1. 集成web JS SDK。

  2. 开启滑动埋点。

    window.collectEvent('init', {
       autotrack: {
          scroll: {
            distance: 200 // 连续滑动距离超过200px后才上报,滑一下停一下不算
            callback: (data) => {
             // 可以修改data,data是滑动上报的属性
              return data
            }
          }
       }
    })
    
    <div id="test" data-scroll='true'></div>
    
  3. 设置需要上报滑动埋点的元素。

    window.collectEvent('init', {
       autotrack: {
          scroll: {
            callback: (data) => {
             // 可以修改data,data是滑动上报的属性,也可以新增
              data.element_class_name = 'sijie'
              return data
            }
          }
       }
    })
    
    还有另外一种通用的方式,元素上有attr1和attr2属性也会采集
    window.collectEvent('init', {
       autotrack: {
          track_attr: ['attr1', 'attr2']
       }
    })
    
    <div attr1='ss'  attr2='ddd'></div>
    
  4. 曝光事件名默认:$bav2b_slide 自定义事件名有2种方式

  • 全局生效

    window.collectEvent('init', {
       autotrack: {
          scroll: {
            eventName: 'customscroll'
          }
       }
    })
    
  • 绑定元素生效

    // 上报自定义事件 customscroll
    <div id="test" data-scroll data-scroll-event="customscroll" style="width:200px;height:200px;">
      <div style="width:2000px;height:200p0x;">我才是真正滑动的元素</div>
    </div>
    
  1. 滑动方向属性:direction

    $direction:1 向上滑动 
    $direction:2 向下滑动 
    $direction:3 向左滑动 
    $direction:4 向右滑动 
    这里的滚动方向均代指滚动条滚动的方向
    
  2. 滑动偏移量属性:offset
    初始化值均为0,向下滑为正,向上滑为负
    Image

3. Web/JS 多实例使用

3.1 多实例介绍

多实例上报是用于一个页面上有上报到多个应用的需求(多个appid),同时只需引入一个SDK。

3.2 功能设置

请先参考Web/JS SDK 集成 接入SDK,并在初始化时开启停留时长功能

// 实例1,上报到appid={{APPID_1}}

window.collectEvent('init', {
    app_id: {{APPID_1}},
    // .....其他初始化配置
});
window.collectEvent('start');

// 实例2,上报到appid={{APPID_2}}
// 此处"finder"可用任意的名称,只需与下文start处保持一致
window.collectEvent('finder.init', {  
    app_id: {{APPID_2}},
    // .....其他初始化配置
});
// 此处"finder"可用任意的名称,只需与上文init处保持一致
window.collectEvent('finder.start');

4. 追踪事件

V5.1.1 以上版本支持

4.1 事件介绍

4.1.1 startTrackEvent

开始追踪一个事件

// 开始追踪play事件
window.collectEvent('startTrackEvent', 'play')

调用此方法,不会上报play事件

4.1.2 endTrackEvent

结束追踪一个事件,可以传入事件和事件属性

// 开始追踪play事件
window.collectEvent('endTrackEvent', 'play', {
  name: '播放结束了'
})

调用此事件后才会最终上报play事件,并带上duration参数,参数值为整个play事件发生期间的耗时。

4.1.3 pauseTrackEvent

暂停监听某个事件

// 暂停追踪play事件
window.collectEvent('pauseTrackEvent', 'play')

4.1.4 resumeTrackEvent

重新开始监听某个事件

// 重新追踪play事件
window.collectEvent('resumeTrackEvent', 'play')

5. SPA单页应用

SPA项目正常情况下只在SDK初始化后发送一次PV,开启SPA后,则会在切换路由的时候自动上报新页面的PV(如果开启了停留时长功能,也会自动上报)

// 开始追踪play事件
window.collectEvent('init', {
  spa: true, // 是否采集单页应用
  allow_hash: true // V5.1.3开始支持,是否允许监听hash变化,默认false,如果不是hash路由,则不需要此参数
})

6. Web/JS 数据加密上报

使用数据加密上报功能,请将SDK升级至官网最新版,且仅支持私有化,saas版本不支持,最小支持版本5.1.6,且不支持IE11以下的浏览器。

6.1 开启加密

// 以下参数都必须要设置
   window.collectEvent('init', {
      enable_encryption: true,
      crypto_publicKey: 'xxxxx', //加密公钥,公钥需以04开头
      encryption_type: 'sm', // 加密类型,目前只支持 sm 类型
      encryption_header: 'gm_sm2' // 加密request header类型,目前只支持 gm_sm2 类型
   })

开启加密后,数据将以国密加密的方式上报
Image

6.1 适用接口

此功能适用于以下接口
1.数据上报 /list
2.用户属性上报 /profile/list
3.设备注册 /webid
4.ab实验 /abtest_config
5.请求ssid /tobid

6.2 在线解密

可以在此网站,解密加密的数据在线解密

7. 暂停和恢复

7.1 暂停

暂停SDK的数据采集和上报

window.collectEvent('stop')

7.2恢复

恢复SDK的数据采集和上报

window.collectEvent('reStart')