You need to enable JavaScript to run this app.
文档中心
增长分析(私有化)

增长分析(私有化)

复制全文
下载 pdf
Web JS SDK
Web/JS SDK API 说明
复制全文
下载 pdf
Web/JS SDK API 说明

本文为您介绍Web端为您提供的主要API,您可以结合埋点规划调用对应API进行埋点。

init
  • 作用:是对SDK实例进行初始化配置。

  • 定义:init(options: InitParams): void

  • 参数

    参数名

    类型

    必填

    说明

    options

    interface InitParams {
      app_id: number;
      log?: boolean;
      channel?: 'cn' 或 'sg';
      channel_domain?: string;
      enable_ab_test?: boolean;
      // ...
    }
    

    SDK需要明确知道上报到哪个应用,上报到哪个DataFinder服务地址,开启哪些功能模块,这些就需要在SDK进行初始化时在init接口中进行配置,init涉及的参数及配置说明见下表。

    参数分类

    字段

    字段值类型

    必填

    字段说明

    基础参数

    app_id

    number

    应用ID,用于标识业务产品,即表明埋点采集的是哪个应用的数据。在DataFinder的控制台创建应用后会自动为您生成对应应用的应用ID。

    log

    boolean

    用于设置是否需要打开日志,设置为true后,控制台会打印调试信息,便于您在集成SDK时通过控制台的日志信息验证SDK集成是否成功。

    channel

    string

    用于设置采集数据的上报通道,每个应用只能设置唯一一个channel,请根据您当前使用的DataFinder服务的环境类型和所在地域情况,设置合适的channel:

    • cn(默认值):如果您当前的环境为私有化环境,可保持默认值,无需修改(即在集成SDK时,init接口中无需配置channel字段)。

    channel_domain

    string

    用于设置数据上报到DataFinder的哪个服务地址:

    • 私有化:
      私有化部署场景下,您需要获取部署私有化环境时,自行规划配置的数据上送地址,如您不清楚此地址,请联系您的项目经理或客户成功经理。

    说明

    • 配置完成channel_domain后,您还需在小程序中将上述地址配置到小程序的白名单中。

    PV事件开关

    disable_auto_pv

    boolean

    设置是否关闭采集预置PV事件——predefine_pageview事件。

    全埋点事件开关

    autotrack

    boolean 或 object

    设置是否开启元素自动采集能力点击/曝光能力,详情请见下文的全埋点模块

    停留时长开关

    enable_stay_duration

    boolean

    设置是否开启统计页面级别的停留时长能力,详情请见下文的停留时长模块及API.

    打通H5开关

    enable_native

    boolean

    设置是否为内嵌H5与APP进行数据打通。
    如果您的页面以H5方式内嵌到了某个APP中,可通过分别集成Web端SDK、APP端SDK,并同时打开内嵌H5开关,实现数据统一上报至APP端,并打通用户数据。更多H5场景的接入实践可参见APP打通H5上报

    ab实验事件开关

    enable_ab_test

    boolean

    设置是否需要开启A/B实验功能。设置为true后,会开启ab实验功能,后续您需要:

    • 在集成SDK初始化时同时配置A/B实验的分流地址(ab_channel_domain),详情见下方的AB模块
    • 使用包括getVar、getAllVars等API来获取实验参数等。A/B实验相关API详情请参见AB实验模块及API

    ab_channel_domain

    string

    如果开启了A/B实验,您需要设置A/B实验的分流地址。

    • 私有化:
      私有化部署场景下,您需要获取部署私有化环境时,自行规划配置的数据上送地址,将私有化部署的数据上报域名添加到小程序后台的“request合法域名”中。如您不清楚此地址,请联系您的项目经理或客户成功经理。

    匿名ID

    enable_anonymousid

    boolean

    是否开启匿名id上报。详细介绍可参见下文的自定义匿名ID.

    自定义webid

    enable_custom_webid

    boolean

    是否设置自定义web_id。如果您不希望使用SDK自动生成的web_id,希望上报自定义web_id,您需要在初始化时开启enable_custom_webid,然后再通过config接口设置web_id,只有设置web_id后才会初始化完成,web_id的值要求必须是数字或者全是数字的字符串类型。详情请参见自定义webid

    二级域名

    cross_subdomain

    boolean

    是否自动跨子域名识别用户,设置为true时多个子域名下使用同一浏览器访问的匿名用户会被自动识别为同一个用户,比如 a.yourdomain.com 和 b.yourdomain.com的情况。

    cookie_domain

    string

    在开启上述配置后使用,可配置存储token或者utm参数的cookie域名,如你需要'a.bytedance.com'和'b.bytedance.com'串通,则传入'.bytedance.com',不传则默认存储在当前域名下

    cookie_expire

    number

    cookie过期时间,单位为ms,默认7天

    单页应用

    spa

    boolean

    设置是否为单页应用。

    allow_hash

    boolean

    设置单页应用是否为hash路由。

    加密
    (私有化支持)

    enable_encryption

    boolean

    是否开启数据加密上报,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块

    crypto_publicKey

    string

    数据加密上报的公钥,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块

    encryption_type

    string

    数据加密上报的类型,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块

    encryption_header

    string

    数据加密上报的header,5.1.5以上版本的SDK支持,具体参考下文的加密上报模块

    上报通用设置

    max_report

    number

    自定义埋点合并上报的最大条数,默认20条。

    timeout

    number

    埋点上报超时时间,单位ms,默认100000ms

    disable_track_event

    boolean

    是否禁用所有埋点上报。如果希望暂时不上报数据,建议使用“stop”接口。

    注意

    设置disable_track_event后无法恢复上报,请谨慎操作。

    事件补发

    enable_storage

    boolean

    是否开启失败存储,开启后,失败的埋点会存储到本地,然后尝试补发。
    5.2.0版本开始支持此配置参数,但是默认关闭,直到5.2.6版本开始默认开启此功能。

    enable_degrade

    boolean

    是否开启失败存储的降级策略,开启后,失败补发采用退避策略,以降低流量损耗。
    5.2.6及以上支持。

    配置下发

    enable_logsetting

    boolean

    是否开启云控配置下发,可以控制事件上报黑白名单等能力。
    5.1.8以上支持。

    SDK监控

    enablef_observe

    boolean

    是否开启SDK自身监控数据采集,用于查看SDK稳定性,5.2.7版本以上支持。

    DevTools

    track_enabled

    boolean

    是否开启devtools自身的埋点采集,5.2.8版本之前默认采集。

    其他

    enable_invalid_config

    boolean

    是否允许公参设置无效值,如 null,undefined,‘’等,5.2.11版本支持。

  • 示例:

    window.collectEvent('init', {
        app_id: {{APPID}}, // 注意类型是数字而非字符串
        channel: 'cn', // 详情请参考上述的准备工作步骤三:获取上报地址
        channel_domain: 'https://gator.volces.com', // // 详情请参考上述的准备工作步骤三:获取上报地址
        log: true, // true:开启本地调试日志打印,false:关闭本地调试日志打印
        ...
    });
    

start
  • 作用:当init初始化调用之后,需要调用start方法,SDK才开始上报事件。在调用start方法之前,不会有事件上报。
  • 定义:start(): void
  • 示例
    window.collectEvent('start');
    

config
  • 作用:调用config对事件进行一些设置,比如设置公共属性、设置user_unique_id等。可以调用多次,后面设置会覆盖之前相同设置项。

  • 定义:config(configs?: ConfigParams): void

  • 参数

    参数名

    类型

    必填

    说明

    configs

    interface ConfigParams {
      user_unique_id?: string 或 null;
      [key: string]: any;
    }
    

    config中包含预设字段,例如用户标识、用户属性、公共属性、系统占用等。您可以在config接口中设置自定义事件公共属性或用户ID相关。

    • 设置自定义事件公共属性:自定义事件公共属性与预置的事件公共属性类似,会在header中作为所有事件的共有属性,详情请参见设置事件公共属性
    • 设置user_unique_id:如果业务系统中有实名ID数据,可上报至user_unique_id字段中,详情请参考user_unique_id相关
  • 示例:

    // 设置事件公共属性,这些公共属性会在后续所有事件上报时都携带上
    window.collectEvent('config', {
        city: '南京',
        nick_name: 'vikings',
    });
    
    // 设置user_unique_id
    window.collectEvent('config', {
        user_unique_id: 'zhangsan'
    });
    
    // 再次设置user_unique_id,会覆盖
    window.collectEvent('config', {
        user_unique_id: 'lisi'
    });
    

上报代码埋点
  • 定义:可以通过CollectEvent方法,通过event-params的方式上报埋点。

单个上报

  • 参数

    参数名

    类型

    必填

    说明

    event

    string

    • 事件命名仅支持字母、数字和下划线,不要使用app_launch、app_terminate等SDK内部自动上报事件名。
    • 建议事件名性统一使用小写。

    params

    Record<string, string 或 number 或 boolean 或 object 或 Array>

  • 示例:

    window.collectEvent('event_name', {
        event_key: 'value'
    });
    

批量上报

  • 逻辑说明:接受数组来上报批量事件,数组项数量大于50时,SDK会自动分多次进行上报,即单次批量最多上报50个事件。

  • 参数

    参数名

    类型

    必填

    说明

    events

    Array<{
        event: string;
        params: Record<string, string 或 number 或 boolean 或 object 或 Array>;
        local_time_ms?: number;
    }>
    

    • event、params的要求与上报单个事件时的要求一致;
    • local_time_ms的值是时间戳,默认SDK会为每个事件补充该字段,如果您主动设置该字段,会以您设置的取值为准。
  • 示例:

    window.collectEvent([['test1', {name:22}], ['test2', {name:3}]])
    

典型错误示例(请勿参考)

// 异常写法
const windowTea = window.collectEvent
windowTea('init')
windowTea('start')
windowTea('test')

这种写法在使用async异步加载SDK文件的时候,可能会导致无法上报事件,原因是:
SDK有一段前置代码:
(function(win, export_obj) {
        win['LogAnalyticsObject'] = export_obj;
        if (!win[export_obj]) {
            function _collect() {
                _collect.q.push(arguments);
            }
            _collect.q = _collect.q 或或 [];
            win[export_obj] = _collect;            
        }
        win[export_obj].l = +new Date();
    })(window, 'collectEvent');
这段前置代码的作用是在SDK文件未加载的时候,使业务执行window.collectEvent不会报错
和保存业务调用的API,等SDK文件加载完成后,SDK会对window.collectEvent重新赋值成实际的方法
然后依次去执行保存的API队列。
业务在SDK未加载完成的时候将window.collectEvent赋值给windowTea,会导致
调用windowTea的值一直都是这段前置代码的,无法真正的上报事件。

stop
  • 作用:暂停SDK上报事件。调用该方法后,SDK会处于暂停状态,后续不再会上报事件。
  • 示例
    window.collectEvent('stop');
    

reStart
  • 作用:恢复SDK上报,一般是在调用disableSDK后又打算取消暂停,即重新启动SDK上报,后续会恢复上报事件。
  • 示例
    window.collectEvent('reStart');
    

页面浏览事件(predefine_pageview)

事件采集开关

predefine_pageview事件默认调用,如需关闭:

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

手动上报

调用该方法以主动上报一次 pv 事件,参数类型同普通事件的事件属性。
如果传入了自定义的事件属性,会和预设的事件属性进行合并;如果有同名属性,则会覆盖掉预设属性。

window.collectEvent("predefinePageView")
window.collectEvent("predefinePageView", {/**...*/})
// 覆盖默认的属性

window.collectEvent("predefinePageView", {
    url: 'xxx',
    url_path: 'xxx'
    // ...
})

事件预置属性

字段

类型

必传

说明

url

string

当前页面地址

url_path

string

当前页面路径,不含协议和主机头部分,例如:/tea/app/10000/behaviorDetail

title

string

页面标题

time

number

时间戳

referrer

string

页面来源,document.referrer的值

对SPA的支持

因为默认情况下,SDK只会在页面加载后,并初始化完成后上报一次 pv 事件,但SPA页面会存在多个页面路由,SDK只会在主页面加载一次,所以在切换页面的时候不会再发起pv,造成后续的页面没有pv数据。因此可以开启SPA参数,SDK会在路由变化时重新上报PV:

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

当然,可能会存在SDK监听到路由变化时,一些页面参数并不是最新的,您也可以手动在路由变化时去上报PV。以react示例:

// <Router history={history} onUpdate={onUpdate}>

function onUpdate() {
    window.collectEvent("predefinePageView")
}

注意

web sdk中 spa开关开启之后,在h5打通app的场景下无法触发predefine_pageview,可以通过以下步骤上报pv。

  1. 配置disable_auto_pv禁止predefine_pageview默认调用。
  2. 路由钩子中主动调用predefinePageView方法,上报pv。

停留时长模块及API

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

功能开启

如果您希望采集上报页面停留时长相关数据,则在web SDK初始化时需打开停留时长功能开关。

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

上报事件介绍

打开停留时长功能开关后,后续会自动在页面活跃、页面非活跃的状态下,采集相关时长数据。

  • 页面活跃状态:页面处于可视,或者可操作的状态,通过上报predefine_page_alive事件来定时上报页面时长数据。
  • 页面非活跃状态:页面处于后台,隐藏,最小化等不可视状态,通过上报predefine_page_close事件来上报页面时长数据。

predefine_page_alive

开启停留时长功能之后,predefine_page_alive事件会在页面活跃状态下,每分钟定时上报一次,或者在切换为非活跃状态时上报一次。随事件上报的事件属性字段如下:

参数

数据类型

说明

title

string

页面title

url

string

页面地址

url_path

string

页面路径

duration

number

正常是60000,在切换状态时小于等于60000,单位:毫秒(ms)。

predefine_page_close

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

说明

在App中H5场景下,predefine_page_close事件不一定能正常上报。如果是分析停留时长需要,可以考虑基于predefine_page_alive事件,具体如何分析停留长请参考下面“分析方式”章节。

随事件上报的事件属性字段如下:

参数

数据类型

说明

title

string

页面标题

url

string

页面url

url_path

string

页面url的path

duration

number

用户在活跃状态下的停留时长之和,单位:毫秒(ms)。

active_times

number

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

total_duration

number

用户访问页面,从开始到关闭的整个时长,单位:毫秒(ms)。

自动重置时长

当路由发生变化时,SDK自动结束当前页面的时长统计并上报alive和close事件,同时开始下一个页面的时长统计。

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);

分析方式

在 DataFinder 上选择predefine_page_alive事件(页面活跃事件)

  • 人均使用时长:选择按停留时长求人均值(SUM/UV)
    Image
  • 次均使用时长:选择按停留时长求平均值(SUM/PV)
    Image

验证埋点

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

用户模块及API

此模块提供设置用户属性,匿名ID,用户类型等能力,并提供了一系列的方法:setAnonymousIdgetTokenprofileSetprofileSetOnceprofileUnsetprofileIncrementprofileAppendbindTokensetWebIDviaUnionIDsetWebIDviaOpenID

说明

此模块用于设置待采集的用户属性数据,如果您希望设置用户的实名标识user_unique_id,可使用config参数进行设置,详情请参见上文中的接口说明文档:config;场景实践文档:user_unique_id相关

设置用户属性

profileSet

  • 作用:上报用户属性,将属性字段用新的值覆盖,一次可以设置一个或多个属性,支持数组类型属性值。

  • 参数

    参数名

    类型

    必填

    说明

    params

    Record<string, string 或 number 或 Array>

    设置的用户属性值。将属性字段用新的值覆盖,一次可以设置一个或多个属性,支持数组类型属性值。

  • 示例

    window.collectEvent('profileSet', {
        key: 'value' // 值支持字符串,数字,数组
    })
    

profileSetOnce

  • 作用:上报用户属性,按属性字段,只设置一次,如果已经有值,则不再更新。

  • 参数

    参数名

    类型

    必填

    说明

    params

    Record<string, string 或 number 或 Array>

    设置的用户属性值。按属性字段,只设置一次,如果已经有值,则不再更新。

  • 示例

    // 示例:设置用户属性,属性名为key_once,属性值为value_once
    window.collectEvent('profileSetOnce', {
        key_once: 'value_once' // 值支持字符串,数字,数组
    })
    

profileUnset

  • 作用:删除某个属性的值。

  • 参数

    参数名

    类型

    必填

    说明

    key

    string

    删除的用户属性值。

  • 示例

    window.collectEvent('profileUnset', 'key')
    

profileIncrement

  • 作用:将数值型属性增加指定的值,可以为负数。

  • 参数

    参数名

    类型

    必填

    说明

    params

    Record<string, number>

    增加的用户属性值。将数值型属性增加指定的值,可以为负数。

  • 示例

    // 示例:设置用户属性,属性名为key,属性值为1
    window.collectEvent('profileIncrement', {
        key: 1
    })
    

profileAppend

  • 作用:当属性不存在时候,创建属性,并set,如果是数组类型属性的,会把值追加进数组。

  • 参数

    参数名

    类型

    必填

    说明

    params

    Record<string, string 或 number 或 Array>

    设置的用户属性值。当属性不存在时候,创建属性,并set,如果是数组类型属性的,会把值追加进数组。

  • 示例

    // 示例:设置用户属性,属性名为key,原本已有属性值,现添加属性值为value_append
    window.collectEvent('profileAppend', {
        key: 'value_append'
    })
    

获取用户ID:getToken

获取SDK的token信息,里面包含web_id、ssid、user_unique_id信息。 如果您需要获取SDK的ID信息,进行其他设置的话,可以如下:

window.collectEvent('getToken', (token) => {
    //token数据内容类似如下:
    {
        "web_id":"6748002161499735560",
        "ssid":"579bc89a-bd45-4021-8314-669c35f38e3d",
        "user_unique_id":"xxx",
    }
  });

自定义匿名ID

如果您的业务体系中有匿名用户ID数据,希望将此数据上报至DataFinder作为匿名用户的标识ID,而非使用DataFinder自动生成的web id来标识匿名用户,那么您可以开启匿名用户ID功能。开启匿名用户ID的功能后,后续将不再请求和上报web id,统一由您上报的匿名ID代替。

注意

匿名ID在web SDK开关设置上无环境限制,但是在最终DataFinder上使用时,有以下限制:

  • 私有化环境中如果已开启统一ID服务,则可直接使用;如果未开启,需联系技术支持人员进行配置,完成后可使用。

开启匿名ID

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

设置匿名ID setAnonymousId

window.collectEvent('setAnonymousId', 'xxxx')

自定义webid

如需更改SDK默认的web id,请在SDK初始化的时候设置enable_custom_webid: true,然后通过setWebIDviaUnionID或者setWebIDviaOpenID设置自定义web id。

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

注意

  • 当开启了enableCustomWebid,必须调用setWebIDviaUnionID或者setWebIDviaOpenID其中的一个设置了webid后,SDK才会继续执行后续的流程。
  • 这种场景适合H5页面在微信小程序中打开,需要传递微信的unionID或者openID给H5页面。

setWebIDviaUnionID

window.collectEvent('setWebIDviaUnionID', 'ssss')

setWebIDviaOpenID

window.collectEvent('setWebIDviaOpenID', 'ssss')

bindToken

如果您有多个实名ID标识的口径,可使用多ID口径功能,将多个口径的用户实名ID均上报至DataFinder,然后调用bindToken接口将多个实名id进行绑定,最终将同一个用户MAPPING到同一个用户唯一标识ssid中。
bindToken的使用示例如下,完整的多ID口径的接入实践请参见多用户口径类型处理

window.collectEvent('bindToken', {
   key: value,
   key2: value2
}, (result) => {
  // 绑定返回的值
})

全埋点模块

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

开启模块

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

配置参数说明

autotrack内置对象

数据类型

说明

text

Boolean

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

svg

Boolean

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

track_attr

[string],字符串数组

配置点击元素自定义的属性

collect_url

function, 函数

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

pv

Boolean

是否开启全埋点的pv事件(bav2b_page、bav2b_page_statistics)上报,默认true,false则禁用。

click

Boolean

是否开启全埋点的点击事件(bav2b_click)上报,默认true,false则禁用

beat

int

配置心跳事件上报的时间间隔,单位为:毫秒(ms)。

exposure

Boolean

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

window.collectEvent('init', {
    autotrack: {
      text: false, // 不采集元素文本
      svg: true, // 采集svg元素
      track_attr: ['attr1', 'attr2'],
      collect_url: () => {
        if (location.href === 'xxx') {
           // 页面地址是xxx则不采集
           return false
        }
        // 其他页面采集                
        return true
      },
      exposure: {
         ratio: 0.5, // 元素曝光面积比例0-1,默认0.5,元素面积展示超过50%后曝光
         stay: 3000, // 元素曝光等待时长,单位ms,默认不等待,直接曝光
      }
    }
})

上报自定义属性

方式一

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

window.collectEvent('init', {
    autotrack: {
       track_attr: ['attr1', 'attr2']
    }
})
// SDK会采集att1 和 attr2的属性和属性值
<div attr1='ss'  attr2='ddd'></div>

方式二

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上

设置采集父元素属性

在一些前端框架下,使用的某些组件,如果在组件上添加了需要采集的属性,在最终编译后,在组件内部又新生成生了一个子元素标签时,可使用。5.2.10版本开始支持

window.collectEvent('init', {
  autotrack: {
    track_attr: ['test'],
    track_parents: true, // 是否查找父元素的属性
    track_parents_level: 2 // 查找父元素的最大层级数量,即最多往上找2层,默认为1层,最大3层
  }
 }

设置采集页面范围

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

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

设置元素采集

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

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

设置元素不采集

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

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

曝光事件

开启曝光埋点

window.collectEvent('init', {
    autotrack: {
      exposure: true // 可以直接传入true,走默认设置
      exposure: {
        radio: 0.5 // 元素曝光比例,0-1,默认0.5,即元素展示面积超过50%时曝光
        stay: 3000, // 元素曝光等待时长,单位ms,默认不等待,直接曝光
        eventName: 'exposure', //可以自定义上报的曝光事件名,默认是bav2b_exposure
        //以上两个条件可以只设置一个,两个都设置的情况下需要同时满足才上报
        callback: (data) => {
         // 可以修改data,data是曝光上报的属性, 也可以新增
          data.element_class_name = 'sijie'
          return data
        }
      }
    }
})

设置曝光元素

// 需要曝光的元素
<div data-exposure>我是需要曝光的元素</div>

注意

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

自定义曝光事件名

除了直接在初始化的时候设置全局的曝光事件名,还可以针对每一个元素进行修改。

// 此元素将上报曝光事件名为custom_exposure
<div data-exposure data-exposure-event="custom_exposure"></div>

参考:exposure_type属性说明

曝光事件(exposure)数据上报时会携带$exposure_type字段,该字段代表了曝光的类型,有以下几种:

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

滑动事件

功能开启

开启滑动事件采集,将会采集特定元素的滚动的行为。

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

自定义滑动事件名

曝光事件名默认:$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>
    
  • 滑动方向属性:direction

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

参考:web端全埋点事件介绍

全埋点事件列表

事件说明

事件触发机制

bav2b_page

页面浏览事件

页面打开后触发上报

bav2b_click

元素点击事件

点击页面元素后触发上报

bav2b_page_statistics

页面访问事件

页面打开后触发上报

bav2b_beat

页面心跳事件

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

bav2b_exposure

元素曝光事件

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

bav2b_page

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

参数

说明

is_html

默认为1

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

是否首次访问

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

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是一个闲置字段,暂无实际意义,您无需关注

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

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

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

参考:web端全埋点采集元素过滤规则

元素类型

是否采集

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')

采集

AB实验模块及API

此模块提供AB实验能力,并提供了一系列的方法:getVargetAllVarsgetAbSdkVersionsetExternalAbVersion

开启模块

使用此模块,在SDK初始化时,在init接口中除了通用参数需要配置外,还需打开A/B实验的模块开关:enable_ab_test: true,同时配置A/B实验的分流地址(ab_channel_domain字段)。

window.collectEvent('init', {
    enable_ab_test: true,
    ab_channel_domain: 'https://tab.volces.com',
    enable_multilink: false,// 是否开启多链接实验,默认false
    enable_ab_visual: false, //是否开启可视化实验,默认false
    ab_timeout: 10000// 分流请求的超时时间,默认10000ms
    disable_ab_reset: false // 是否禁止切换用户时重新获取A/B实验的配置信息,默认false
    ...
});

模块方法

getVar

  • 作用:​获取AB实验配置中的实验对应的配置项值,同时SDK会收集对应的vid(业务一般不用直接关心该vid),命中实验后,会自动上报一个abtest_exposure事件。

  • 参数:

    参数名

    类型

    必填

    说明

    name

    string

    实验配置中的key。

    说明

    提示:业务调用getVar方法,SDK发现实验配置中有对应的key时,会上报一个预置事件abtest_exposure

    defaultValue

    any

    兜底值,当实验配置中没有相应的key的配置项,该方法会返回这个兜底值。

    callback

    (value: any) => void

    当获取到实验配置项值时,如果有设置callback就会执行该callback,并把实验配置项值作为callback的参数。

  • 示例:
    ```TypeScript

    window.collectEvent('getVar',' color', 'red', (value) => {
        // 当配置中存在color实验,value值为配置中的color对应的值,否则值为red
    });
    ```
    

getAllVars

  • 作用:​获取ab实验所有配置信息。

  • 参数:

    参数名

    类型

    必填

    说明

    callback

    (data: any) => void

    如果有设置callback就会执行该callback,并把实验配置全部数据作为callback的参数。
    实验配置全部数据结构大概如下:

    {
        aa: {
            val: 'aa-value',
            vid: '11'
        },
        test_before_6d: {
            val: 'test_before_6d-value',
            vid: '22'
        },
        bb: {
            val: 'bb-value',
            vid: '33'
        }
    }
    
  • 示例:
    TypeScript window.collectEvent('getAllVars', (data) => { // 获取所有实验配置信息 // data值大概如下: /* { aa: { val: 'aa-value', vid: '11' }, test_before_6d: { val: 'test_before_6d-value', vid: '22' }, bb: { val: 'bb-value', vid: '33' }, } */ });

getAbSdkVersion

  • 作用:​获取已曝光的实验,返回的结果是所有曝光实验的vid,使用逗号连接起来,格式例如:123,234,678

  • 返回值:

    类型

    说明

    string

    所有曝光实验的vid,使用逗号连接起来,格式例如:123,234,678

  • 示例:

    // vids值类似 123,234,678
    const vids = window.collectEvent('getAbSdkVersion');
    

setExternalAbVersion

  • 作用:​手动设置额外的AB实验配置。

  • 参数:

    参数名

    类型

    必填

    说明

    vids

    string 或 null

    vids的格式要求:使用逗号将vids值连接起来,大概这样'123,234,678'。

    • 通过此方式设置的额外的实验配置vids,会合并到通过getVar处理获得到的vids中。
    • 多次调用时,最后一次设置的额外的实验配置vids会覆盖之前的。
    • 当设置null时,SDK会清空设置的额外的实验配置vids,并且不会影响通过getVar处理获得到的vids。
  • 示例:

    • 设置额外的实验配置
      // 手动设置额外的
      window.collectEvent('setExternalAbVersion', '25,225,2225');
      

加密上报模块

接入Web SDK时,如果您希望对上报数据进行加密,可使用数据加密上报功能,当前支持使用国密加密。

注意

接入Web SDK时使用加密功能需满足以下条件:

  • SDK版本要求:请将Web SDK 升级至官网最新版(最小支持版本5.1.6+)。
  • DataFinder环境要求:当前仅DataFinder私有化环境支持加密设置。
  • Web页面浏览器版本要求:不支持IE11以下的浏览器。

开启加密

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

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

适用接口

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

在线解密

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

生命周期模块

您可以配置是否监听监听某个SDK生命周期的广播,适用于SDK运行时的消息用来获取SDK状态。

  • 监听某个SDK生命周期的广播

    window.collectEvent('on', 'ready', (data) => {
       // 监听到sdk ready了,do something
       // 有的消息有data,有的没有
    })
    
  • 取消监听广播

    // 取消监听ready广播
    window.collectEvent('off', 'ready') 
    

消息列表

请查看参考:Web/JS SDK FAQ

追踪事件模块

此模块提供了追踪某个事件的能力。
例如,追踪视频播放耗时相关数据,但不希望每次视频的操作都触发数据上报,仅需要在视频完播时上报视频播放过程中的数据,此时可以用追踪事件模块,在视频点击时标注Start完播时标注End,在end时上报所有中间过程的数据。

startTrackEvent

开始追踪一个事件。

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

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

endTrackEvent

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

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

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

pauseTrackEvent

暂停监听某个事件。

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

resumeTrackEvent

重新开始监听某个事件。

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

最近更新时间:2026.01.12 16:56:53
这个页面对您有帮助吗?
有用
有用
无用
无用