更新记录

1.2.0(2024-08-02) 下载此版本

免费开放

1.0.0(2024-07-28) 下载此版本

1.0.0


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
×
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

SCPoint 埋点

日常开发过程中可能遇到统计页面中的元素被用户看到了多少次、点击了多少次的需求,也就是曝光埋点、点击埋点,通过SCPoint组件可以轻松实现,开发人员只需要传入埋点ID、内容、监听事件即可,无需关心监听逻辑。该组件融合了点击、曝光事件回调,可以满足开发需求,具体使用请查看API文档

设计特色

SCPoint组件是基于IntersectionObserver API实现,可以实现对页面元素的监听,当元素进入/离开页面时,触发对应事件,有关该API的详细使用可查看MDN文档。

  • 曝光原理使用的是intersectionRatio参数,当元素与页面视窗有重叠就算未完全展示也判断为曝光;
  • 该组件支持同时监听多个元素;
  • 埋点内状态独立,互不影响;

简单使用

定义一个简单的曝光埋点,并在曝光埋点事件内打印埋点内容和事件参数,打开控制台查看效果。

<template>
        <view  class="content">
            <view  class="text-area">
            <text  class="title">{{title}}</text>
            </view>
            <view  class="content-middle"></view>
            <xhy-scpoint  id="showMore1" reportContent="上报内容1"@onPointShow="onPointShow">
                <button  type="primary">曝光埋点1</button>
            </xhy-scpoint>
        </view>
</template>

<script>
export  default {
    data() {
        return {
            title:  'Hello'
        }
    },
    onLoad() {

    },
    methods: {
        onPointShow(info) {
            console.log(info);
        }
    }
}
</script>

<style>
    .content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    }

    .logo {
    height: 200rpx;
    width: 200rpx;
    margin-top: 200rpx;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 50rpx;
    }

    .text-area {
    display: flex;
    justify-content: center;
    }

    .title {
    font-size: 36rpx;
    color: #8f8f94;
    }
    .content-middle {
    height: 800px;
    width: 100%;
    }
    button {
    margin-bottom: 20px;
    }
</style>

曝光点击混合埋点

如果需要同时监听曝光和点击事件,可以使用onPointShow和onPointClick属性,打开控制台查看效果。

<template>
        <view  class="content">
            <view  class="text-area">
            <text  class="title">{{title}}</text>
            </view>
            <view  class="content-middle"></view>
            <xhy-scpoint  id="showMore1" reportContent="上报内容1"@onPointShow="onPointShow" @onPointClick="onPointShow">
                <button  type="primary">曝光埋点1</button>
            </xhy-scpoint>
        </view>
</template>

<script>
export  default {
    data() {
        return {
            title:  'Hello'
        }
    },
    onLoad() {

    },
    methods: {
        onPointShow(info) {
            console.log(info);
        }
    }
}
</script>

<style>
    .content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    }

    .logo {
    height: 200rpx;
    width: 200rpx;
    margin-top: 200rpx;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 50rpx;
    }

    .text-area {
    display: flex;
    justify-content: center;
    }

    .title {
    font-size: 36rpx;
    color: #8f8f94;
    }
    .content-middle {
    height: 800px;
    width: 100%;
    }
    button {
    margin-bottom: 20px;
    }
</style>

单次页面访问重复触发曝光事件

埋点内容出现在视窗内会触发曝光事件,如果设置reportAllways为true,当埋点消失后再次出现也会触发曝光事件,打开控制台查看效果。

<template>
        <view  class="content">
            <view  class="text-area">
            <text  class="title">{{title}}</text>
            </view>
            <view  class="content-middle"></view>
            <xhy-scpoint  id="showMore1" reportContent="上报内容1"@onPointShow="onPointShow" @onPointClick="onPointShow" :reportAllways="true">
                <button  type="primary">曝光埋点1</button>
            </xhy-scpoint>
        </view>
</template>

<script>
export  default {
    data() {
        return {
            title:  'Hello'
        }
    },
    onLoad() {

    },
    methods: {
        onPointShow(info) {
            console.log(info);
        }
    }
}
</script>

<style>
    .content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    }

    .logo {
    height: 200rpx;
    width: 200rpx;
    margin-top: 200rpx;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 50rpx;
    }

    .text-area {
    display: flex;
    justify-content: center;
    }

    .title {
    font-size: 36rpx;
    color: #8f8f94;
    }
    .content-middle {
    height: 800px;
    width: 100%;
    }
    button {
    margin-bottom: 20px;
    }
</style>

参数配置

属性名 描述 类型 默认值
id 埋点id,必须保障id唯一,且符合变量命名规范 string (必填)
reportContent 埋点需要上报的内容 string (必填)
reportAllways 单次页面访问是否重复触发曝光事件 boolean false
onPointShow 埋点曝光回调事件 (value: Object) => void
onPointClick 埋点点击回调事件 (value: Object) => void

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问