npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

hzdataanalytic

v1.1.3

Published

埋点sdk

Downloads

83

Readme

Web JS SDK

集成文档(Web)

1. 集成埋点分析 SDK

  • Script 标签

    如果你需要把引入代码和 SDK 文件整合在一个文件中,然后在页面头部通过 script src 的方式引入。你可以把引入代码改成如下方式,并放在下载下来的 sdk.min.js 文件前面。

    <script charset='UTF-8' src="在 github 下载新版本的 /dist/sdk.min.js "></script>
    <script>
      var sensors = window['hzdataanalytic'];
    sensors.init({
      app_id: "app_limvtuenmd",
      aes_key:'0123456789abcdef',
      server_url: 'https://tapp3.jegotest.top/eventtracking/api',
      is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
      use_client_time:true, 
      heatmap: {
        //是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
        clickmap:'default',
        //是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
        scroll_notice_map:'not_collect'
      }   
    });
      
    </script>
  • CommonJS

    从 npm 获取 sdk , ***npm install hzdataanalytic ***

    var sensors = require('hzdataanalytic'); 
    sensors.init({
      app_id: "app_limvtuenmd",
      aes_key:'0123456789abcdef',
      server_url: 'https://tapp3.jegotest.top/eventtracking/api',
      is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
      use_client_time:true, 
      heatmap: {
        //是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
        clickmap:'default',
        //是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
        scroll_notice_map:'not_collect'
      }
    });
      
  • AMD

    引入sdk.amd.min.js ,假设该文件放到与 require.js 同一目录中

    requirejs(["./dist/sdk.amd.js"], function(sensors) {
      sensors.init({
        app_id: "app_limvtuenmd",
        aes_key:'0123456789abcdef',
        server_url: 'https://tapp3.jegotest.top/eventtracking/api',
        is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
        use_client_time:true, 
        heatmap:{
          clickmap: 'default',
          scroll_notice_map: 'not_collect'
        }
      });
       
    });
  • ES Module

    import sensors from './dist/sdk.es6.js'
    # import sensors from "hzdataanalytic";
    sensors.init({
      app_id: "app_limvtuenmd",
      aes_key:'0123456789abcdef',
      server_url: 'https://tapp3.jegotest.top/eventtracking/api',
      is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
      use_client_time:true, 
      heatmap: {
        //是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
        clickmap:'default',
        //是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
        scroll_notice_map:'not_collect'
      }
    });
      

2. SDK 基本配置

2.1. 配置项目https://tapp3.jegotest.top/eventtracking/api

自动生成导入代码时,会自动配置当前项目接收地址。其他方式引入 SDK 时,需要手动将 server_url 参数设置为相应项目的https://tapp3.jegotest.top/eventtracking/api。

集成:https://tapp3.jegotest.top/eventtracking/api stage:https://svapp3.jegotest.top/eventtracking/api 生产:https://app3.jegotrip.com.cn/eventtracking/api ----> app

2.2. 开启全埋点

初始化 SDK 时,heatmap 参数和 quick() 接口可以配置 SDK 全埋点。全埋点的更多配置,可参考 全埋点 (Web) 。

2.3. 设置事件公共属性

对于所有事件都需要添加的属性,可在初始化 SDK 后,sensors.quick('autoTrack') 前,调用 registerPage() 将属性注册为公共属性

<script>
// 初始化 SDK

// 注册公共属性
sensors.registerPage({
	current_url: location.href,
	referrer: document.referrer
});
</script>

2.4. 代码埋点追踪事件

SDK 初始后,即可以通过 track() 方法追踪用户行为事件,并添加自定义属性:

sensors.track('BuyProduct', {
	ProductName: "MacBook Pro", 
	ProductPrice: 123.45, 
	IsAddedToFav: false,
});

3. 调试查看事件信息

3.1. 事件的触发日志

测试阶段在初始化代码中添加 show_log 设置为 true,页面上有事件触发时,浏览器开发者工具会打印采集的事件信息,如下图。上线时初始化代码中将 show_log 设置为 false 即可关闭日志输出功能,show_log 和 server_url 平级。

基础 API 介绍(Web)

1. SDK 初始化参数

| 参数 | 默认值 | 含义 | 备注 | | :------------------- | :-------------- | :----------------------------------------------------------- | :----------------------------------------------------------: | | sdk_url | 无 | sdk.min.js 文件的地址。 | 引入js放在你们自己目录下。 | | server_url | 无 | https://tapp3.jegotest.top/eventtracking/api。 | 集成:https://tapp3.jegotest.top/eventtracking/apistage:https://svapp3.jegotest.top/eventtracking/api生产:https://app3.jegotrip.com.cn/eventtracking/api | | app_id | 无 | appid | | | aes_key | 无 | key | | | show_log | false | 设置 true 后会在网页控制台打 logger,会显示发送的数据,设置 false 表示不显示。 | | | is_track_single_page | false | 表示是否开启单页面自动采集 $pageview 功能,SDK 会在 url 改变之后自动采集web页面浏览事件 $pageview。 | | |

2. 事件公共属性

2.1. 设置事件静态公共属性

对于所有事件都需要添加的属性,可在初始化 SDK 后,调用 registerPage() 将属性注册为公共属性:

<script>
// 注册公共属性
sensors.registerPage({
	current_url: location.href,
	referrer: document.referrer
});
</script>

全埋点

1. 开启全埋点

1.1. 代码示例

<script charset='UTF-8' src="在 github 下载新版本的 sdk.min.js "></script>
<script>
  var sensors = window['hzdataanalytic'];
sensors.init({
  app_id: "app_limvtuenmd",
  aes_key:'0123456789abcdef',
  server_url: 'https://tapp3.jegotest.top/eventtracking/api',
  is_track_single_page:true, // 单页面配置,默认开启,若页面中有锚点设计,需要将该配置删除,否则触发锚点会多触发 $pageview 事件
  use_client_time:true, 
  heatmap: {
    //是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
    clickmap:'default',
    //是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
    scroll_notice_map:'default'
  } 
});
</script>

Web JS SDK 全埋点包括三种事件:Web 页面浏览、Web 元素点击、Web 视区停留。如果需要针对全埋点类型进行单独配置,则参照下文中单个全埋点类型使用的帮助文档。

1.2. Web 页面浏览($pageview)

// 设置之后,SDK 就会自动收集页面浏览事件,以及设置初始来源。
sensors.quick('autoTrack')

// 另外,如果想加额外的属性,可以如下方式(添加 platform 属性为 h5)
sensors.quick('autoTrack', {
	platform:'h5'
})

1.3. Web 元素点击($WebClick)

// SDK 初始化参数配置
heatmap: {
	// 是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
    // 默认只有点击 a input button textarea 四种元素时,才会触发 $WebClick 元素点击事件
	clickmap:'default'
}

1.4. 视区停留事件($WebStay)

// SDK 初始化参数配置
heatmap: {
	//是否开启触达图,default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭。
	scroll_notice_map:'default'
}

2. 其他元素类型的元素点击事件采集

2.1. 支持 div 类型元素的自动采集

在原来的全埋点(采集 a、button、input 、textarea 标签)基础上新增对 div 标签的采集,采集规则为:

  • div 为叶子结点(无子元素)时采集 div 的点击
  • div 中有且只有样式标签(['mark','strong','b','em','i','u','abbr','ins','del','s','sup'])时,点击 div 或者样式标签都采集 div 的点击

通过 collect_tags 配置是否开启 div 的全埋点采集,默认不采集。如需开启 ,配置 collect_tags 参数如下:

heatmap:{  
  collect_tags:{
    div : true
  }
}

2.2. 支持任意类型元素的自动采集

通过 collect_tags 配置是否开启其他任意元素的全埋点采集(默认不采集),其中 div 通过配置最多可以采集 3 层嵌套情况***。***

heatmap: {
  //是否开启点击图,默认 default 表示开启
  clickmap:'default',
    collect_tags: {
      div: {
        max_level: 1 // 默认是 1,即只支持叶子 div。可配置范围是 [1, 2, 3],非该范围配置值,会被当作 1 处理。
      },
        li: true,
          img: true
      // ... 其他标签
    }
}

2.3. 支持任意层级 div 元素的自动采集

开启方式:

  1. 该功能通过可视化圈选实现,在可视化模式下去圈选相应的 div 元素后,全埋点可自动采集该 div 元素

  2. SDK 需要配置参数 get_vtrack_config: true 开启该功能(默认 false 关闭)。参考如下:

    heatmap: {
      //是否开启点击图,默认 default 表示开启
      clickmap:'default',
      get_vtrack_config: true
    }
  3. 服务端需要开启相应的配置。通过命令开启(后端开启:spadmin config set server -p sdg -m web -n enable_unlimit_position_web_element -v true)。

2.4. 配置特殊属性来支持其他类型元素的自动采集

2.4.1. **配置特殊属性:**data-sensors-click

开启全埋点时,给需要自动采集点击事件的元素增加属性:data-sensors-click

代码示例如下:

<div name='test' data-hz-click>我是测试元素</div>
<li data-hz-click class='test-li'>我是测试元素</li>
2.4.2. 配置页面元素点击的自定义属性

开启全埋点时,支持配置带有指定属性的页面元素点击,自动采集点击事件。代码示例如下:

<script src="xxxx/xxx/sdk.js"></script>
<script>
  var sensors = sensorsDataAnalytic201505;
  sensors.init({
    app_id: "app_limvtuenmd",
    aes_key:'0123456789abcdef',
    server_url: 'https://tapp3.jegotest.top/eventtracking/api', 
    heatmap: {
      track_attr: ['hotrep', 'anotherprop', "data-prop2"],
      clickmap:'default',
      scroll_notice_map: 'not_collect'
    }
  });
</script>
...
<p hotrep id="test1">hotrep p tag</p>
<p><span anotherprop id="test2">another repo a.b.c</span></p>
<p><strong data-prop2 id="test3">strong with prop2 attribute</strong></p>

2.5. 代码埋点触发元素点击事件

如果你想要对非 a input button textarea 的其他元素采集点击事件的话,请在元素发生点击的时候,调用我们的这个方法。

// 下面演示一个 div 标签被点击时触发预置的元素点击事件
<div id="submit_order">提交订单</div>

<script type="text/javascript">
$('#submit_order').on('click', function() {
	sensors.quick('trackHeatMap', this, {
		customProp1: 'test1', //如果需要添加自定义属性需要将 SDK 升级到 1.0.4 及以上版本。
		customProp2: 'test2'
	});
});
</script>

// 注意: 在原生 js 中调用我们绑定的 click 事件时 this 指向的是元素节点,在其他框架采集点击事件时 this 指针也应该指向相应的元素节点,例如在 vue 中可以参考下面示例。

<div v-on:click="track">点击</div>

<script>
export default {
	methods: {
		track: function(event) {
			sensors.quick('trackHeatMap', event.target, {
				customProp1: 'test1', //如果需要添加自定义属性需要将 SDK 升级到 1.0.4 及以上版本。
				customProp2: 'test2'
			});
		}
	}
}
</script>

新方法 trackAllHeatMap ,当调用这个方法时,此方法的第二个参数可以传入包括 a, input, button, textarea 标签和 div,img 等的所有标签。而 trackHeatMap 只采集除 a, input, button,textarea 之外的标签。同时,这两个方法均可以设置自定义属性,且支持回调函数(这两个方法的第四个参数都可以传入一个方法)。

// 下面演示一个 button 按钮被点击时触发预置的元素点击事件
<button id="testp">测试按钮</button>

<script type="text/javascript">
  $('#testp').on('click', function() {
    sensors.quick('trackAllHeatMap', this, {
      customProp1: 'test1', //如果需要添加自定义属性需要将 SDK 升级到 1.0.4 及以上版本。
      customProp2: 'test2'
    });
  });
</script>

3. 全埋点相关参数配置

3.1. Web 元素点击

3.1.1. heatmap 相关参数,提供了对于 $WebClick 事件的自定义设置和处理。

heatmap 相关参数说明:

| 参数名 | 参数值说明 | 备注 | | :---------------- | :----------------------------------------------------------- | :----------------------------------------------------------- | | clickmap | 是否开启点击图,默认 default 表示开启,可以设置 'not_collect' 表示关闭。 | 需要 Web JS SDK 版本号大于 1.0.4。 | | scroll_notice_map | 是否开启触达图,设置 default 表示开启,设置 'not_collect' 表示关闭。 | 需要 Web JS SDK 版本号大于 1.0.4。 | | loadTimeout | 毫秒 | 设置多少毫秒后开始渲染点击图,因为刚打开页面时候页面有些元素还没加载。 | | collect_url | 返回真会采集当前页面的元素点击事件,返回假表示不采集当前页面,设置这个函数后,内容为空的话,是返回假的。不设置函数默认是采集所有页面。 | | | collect_element | 用户点击页面元素时会触发这个函数,让你来判断是否要采集当前这个元素,返回真表示采集,返回假表示不采集。 | | | custom_property | 假如要在 $WebClick 事件增加自定义属性,可以通过标签的特征来判断是否要增加。 | 注意:如果同时使用了 trackAllHeatMap 或者 trackHeatMap 方法设置了自定义属性,那么这 两个方法 中的自定义属性对象会覆盖 custom_property 返回值中的同名属性,它的优先级更高。 | | collect_input | 考虑到用户隐私,这里可以设置 input 里的内容是否采集。 | 如果返回真,表示采集 input 内容,返回假表示不采集 input 内容,默认不采集。 | | element_selector | SDK 默认优先以元素 ID 作为选择器采集点击事件,若不想以 ID 作为选择器,可以设置该参数为 'not_use_id'。 | 1.0.4 以上版本支持。 | | renderRefreshTime | 毫秒 | 第二版点击图滚动滚动条,改变页面尺寸后延时多少毫秒重新渲染页面。 |

heatmap 相关参数代码示例:

heatmap: {
  clickmap:'default',
    scroll_notice_map:'default',
      loadTimeout: 3000,
        collect_url: function(){
          //如果只采集首页
          if(location.href === 'example.com/index.html' || location.href === 'example.com/'){
            return true;
          }
        },
          //此参数针对预置 $WebClick 事件(包括 quick('trackHeatMap') quick('trackAllHeatMap') 触发的)生效。
          collect_element: function(element_target){
            // 如果这个元素有属性sensors-disable=true时候,不采集。
            if(element_target.getAttribute('sensors-disable') === 'true'){
              return false;
            }else{
              return true;
            }
          },
            //此参数针对预置 $WebClick 事件(包括 quick('trackHeatMap') quick('trackAllHeatMap') 触发的)生效。
            custom_property:function( element_target ){
              //比如您需要给有 data=test 属性的标签的点击事件增加自定义属性 name:'aa' ,则代码如下:
              if(element_target.getAttribute('data') === 'test'){
                return {
                  name:'aa'
                }
              }
            },
              collect_input:function(element_target){
                //例如如果元素的 id 是a,就采集这个元素里的内容。
                if(element_target.id === 'a'){
                  return true;
                }
              },
                element_selector:'not_use_id',
                  renderRefreshTime:1000
}

3.2. Web 视区停留

3.2.1. 相关参数说明:

scrollmap 相关参数说明:

| 参数名 | 参数值说明 | | :---------- | :----------------------------------------------------------- | | collect_url | 返回真会采集当前页面的数据,返回假表示不采集当前页面,设置这个函数后,内容为空的话,是返回假的。不设置函数默认是采集所有页面。 |

heatmap 相关参数说明:

| 参数名 | 参数值说明 | 备注 | | :-------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- | | scroll_notice_map | 是否开启触达图,设置 default 表示开启,设置 'not_collect' 表示关闭。 | 需要 Web JS SDK 版本号大于 1.0.4。 | | scroll_delay_time | 毫秒 | 设置触达图的有效停留时间,默认超过 4 秒以上算有效停留。 | | scroll_event_duration | 秒 | 预置属性停留时长 event_duration 的最大值,默认 18000 秒,5 小时。 |

scrollmap 和 heatmap 相关代码示例:

scrollmap: {
  collect_url: function(){
    //如果只采集首页
    if(location.href === 'example.com/index.html' || location.href === 'example.com/'){
      return true;
    }
  },
},
  heatmap:{
    //是否开启触达图,default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭。
    scroll_notice_map:'not_collect',
    scroll_delay_time: 4000, 
    scroll_event_duration: 18000 //单位秒,预置属性停留时长 event_duration 的最大值。默认5个小时,也就是300分钟,18000秒。
  }