Html网页标签曝光埋点

简介:

移动开发过程中经常要用埋点来促进产品的改进,在native端做埋点相对来说简单一点,比如曝光,在view的类中可以使用显示回调来做,但在网页中要如何做埋点呢,比如要知道一个div标签的曝光次数应该怎么做,类比客户端自然是想知道有没有类似显示的回调,很不幸,Html里没有这个事件回调,但onload是有的,要实现曝光埋点,需要自己实现曝光事件的检测.以下是实现思路:

曝光,即是标签从浏览器中不可见到可见区域内时触发,关键就是要检测标签当前的位置还有当前可见区域的位置.如果这标签的所表示的区域矩形和可见区域相交,则可以认为标签被看到.那么就要分别计算标签区域大小和坐标和可见区域大小和坐标. 
可见区域坐标和大小可以使用window对象获取scrollTop,scrollLeft和clientWidth,clientHeight来得到.标签的大小可以通过getElementById来获取到div对象然后得到相应属性.为了效率,我们可以先在body加载完后先获得好标签的大小和位置,然后在窗口的滚动时实时计算可见区域,并且计算可见区域是否和各个标签区域相交由此得到标签是否可见,以下是代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
    // 为window设置滑动监听
    window.onscroll = function() {
        // 可见区域顶部坐标
        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
        // 可见区域底部坐标
        var scrollBottom = scrollTop + window.innerHeight;
        // 计算哪些标签在可见区域
        var found = "";
        for (var i = 0; i < positions.length; i++) {
            var item = positions[i];
            // 移动端一般内容没有左右滑,简单起见,不考虑宽度,只考虑竖直方向是否相交
            if ( scrollTop < (item[1] + item[3]) && scrollBottom > item[1]) {
                console.log((i + 1) + " in screen")
                found += ((i + 1) + ",")
            } 
        }
        // 将结果显示在页面上
        document.getElementById("info").innerHTML = found + "in screen";
    }
</script>
<style type="text/css">
    .span {
        text-align: center;
        font-size: 50pt;        
    }
</style>
</head>

<body id="body">
    <div id="0" style="width: 200px; height: 500px; background-color: #FF00FF"><div align="center"><span class="span">1</span></div></div>
    <div id="1" style="width: 200px; height: 500px; background-color: #00FFFF"><div align="center"><span class="span">2</span></div></div>
    <div id="2" style="width: 200px; height: 500px; background-color: #FFFF00"><div align="center"><span class="span">3</span></div></div>
    <div id="3" style="width: 200px; height: 500px; background-color: #EE00EE"><div align="center"><span class="span">4</span></div></div>
    <div id="4" style="width: 200px; height: 500px; background-color: #EEEE00"><div align="center"><span class="span">5</span></div></div>
    <div id="5" style="width: 200px; height: 500px; background-color: #EE00EE"><div align="center"><span class="span">6</span></div></div>
    <div id="6" style="width: 200px; height: 500px; background-color: #DD00DD"><div align="center"><span class="span">7</span></div></div>
    <div id="7" style="width: 200px; height: 500px; background-color: #DDDD00"><div align="center"><span class="span">8</span></div></div>
    <div id="8" style="width: 200px; height: 500px; background-color: #00DD00"><div align="center"><span class="span">9</span></div></div>
    <div id="info" style="position: fixed; bottom: 0px; right: 0px; font-size: 30pt; width: auto; height: auto; background-color: #AAAAAA"></div>
</body>
<script type="text/javascript">
    // 获取各个标签位置和大小 
    var positions = [];
    for (var i = 0; i < 9; i++) {
        //console.log(i.toString());
        var div = document.getElementById(i.toString());
        console.log(div.scrollWidth)
        positions.push([div.offsetLeft, div.offsetTop, div.clientWidth, div.clientHeight]);
    }
    console.log(positions)

</script>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
原文发布时间:2018-6-19
原文作者:cmdmac
本文来源 csdn博客如需转载请紧急联系作者

相关文章
|
2月前
|
移动开发 HTML5
HTML5标签的类型
HTML5标签的类型。
61 5
|
2月前
|
存储 移动开发 前端开发
HTML基础知识:构建网页的基石
【10月更文挑战第11天】HTML基础知识:构建网页的基石
116 0
|
26天前
|
移动开发 搜索推荐 UED
HTML5的新语义化标签
HTML5引入的这些新语义化标签,通过明确标识内容的结构和意义,使得网页结构更加清晰,易于理解和维护。使用这些标签不仅提升了网页的可读性和可访问性,还增强了搜索引擎和辅助技术对网页内容的解析能力。在实际开发中,合理使用这些语义化标签,能够显著提升网页的质量和用户体验。
92 49
|
20天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
31 5
|
3月前
|
JavaScript 前端开发 容器
用HTML DOM实现有条件地渲染网页元素(上)
用HTML DOM实现有条件地渲染网页元素(上)
|
3月前
|
存储 JavaScript 前端开发
用HTML DOM实现有条件地渲染网页元素(下)
用HTML DOM实现有条件地渲染网页元素(下)
|
2月前
|
数据安全/隐私保护 C++
【HTML】构建网页的基石
本文介绍了HTML的基本概念和常用标签,包括HTML文件的基本结构、常见标签(如标题、段落、换行、图片、超链接等)、表格与表单的使用方法,以及无语义标签div和span的特性。通过具体示例展示了如何在VS Code中快速生成HTML框架及各标签的应用场景,帮助初学者快速掌握HTML的基础知识。
54 1
【HTML】构建网页的基石
|
1月前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
1月前
|
存储 移动开发 前端开发
|
2月前
|
前端开发
【HTML】img标签和超链接标签
【HTML】img标签和超链接标签
47 2