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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java CompletableFuture的complete(7)
Java CompletableFuture的complete(7) 先看代码: CompletableFuture<String> future = CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { try { TimeUnit.SECONDS.sleep(2); } catch (Exception e) { e.printStackTrace(); } return "blog.csdn.net/zhangphil"; } }); System.out.println(System.currentTimeMillis() + ":time 1"); future.whenCompleteAsync(new BiConsumer<String, Throwable>() { @Override public void accept(String s, Throwable throwable) { System.out.pri...
- 下一篇
Javascript 开启浏览器全屏模式
通常在某些情况下,我们需要让浏览器开启全屏模式,以便获得更好的视觉体验,先看下全屏模式简单的几个API。 浏览器默认绑定 非全屏模式下, document的F11按键绑定开启全屏模式 全屏模式下, document的esc和F11 按键绑定关闭全屏模式 屏幕全屏模式改变事件 当成功进入全屏模式后, document会收到一个fullscreenchange 事件。 当退出全屏状态后, document又会收到fullscreenchange 事件。 varscreenChange='webkitfullscreenchange'||'mozfullscreenchange'||'fullscreenchange' 判断当前是否处于全屏状态 非标准: varisFullScreen=document.fullScreen||document.mozFullScreen||document.webkitIsFullScreen; 标准: varisFullScreen=document.fullscreenElement||document.mozFullScreenElement||do...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度