打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JS监测产品有效曝光

电商列表页面,数据加载,并不是写到了列表的产品图都被客户看见了。有时候根本没有被加载

1. 判断加载
浏览器是否能判断一张图,加载完毕,如果可以那么触发JS,推送一次曝光数据

轮询图片

<!DOCTYPE HTML><html><head>    <meta charset="utf-8">    <title>img - complete attribute</title></head><body>    <img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg">    <p id="p1">loading...</p>    <script type="text/javascript">        function imgLoad(img, callback) {            var timer = setInterval(function() {                if (img.complete) {                    clearInterval(timer);                    callback();                }            }, 50)        }        imgLoad(img1, function() {           // p1.innerHTML = '加载完毕';		//Ajax 触发监测系统 传送产品ID        })    </script></body></html>

图片的onload

<!DOCTYPE HTML><html><head>    <meta charset="utf-8">    <title>img - load event</title></head><body>    <img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg">    <p id="p1">loading...</p>    <script type="text/javascript">        img1.onload = function() { 	//Ajax 触发监测系统 传送产品ID         }    </script></body></html>

2. JS判断看见

看见,图片一个列表,被看见和被加载两码事。

以下代码显示了JS如何监测一个图片被看见

<!DOCTYPE html><html lang="en"><head>	<meta charset="UTF-8">	<title>Document</title></head><style type="text/css">.box {	width: 100%;	height: 200px;	background: #ff0000;	margin-bottom: 10px;	text-align: center;	color: #fff;	line-height: 200px;	font-family: microsoft yahei;	font-size: 40px; }.animate{	animation: showText 1s;}@keyframes showText{	from {		font-size: 20px;	}	to {		font-size: 40px;	}}</style><body>	<div class="box">1</div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div>	<div class="box"></div></body><script type="text/javascript"> var box = document.getElementsByClassName('box');function initcheckimg(){	//滚动条高度+视窗高度 = 可见区域底部高度	var visibleBottom = window.scrollY + document.documentElement.clientHeight;	//可见区域顶部高度	var visibleTop = window.scrollY;	for (var i = 0; i < box.length; i++) {		var centerY = box[i].offsetTop+(box[i].offsetHeight/2);		if(centerY>visibleTop&centerY<visibleBottom){			box[i].innerHTML = i+'区域可见'			box[i].setAttribute("class",'box animate')			console.log('第'+i+'个区域可见');		}else{			box[i].innerHTML = '';			box[i].setAttribute("class",'box')	  			//console.log('第'+i+'个区域不可见');	  		}	  	}	  } 	  initcheckimg();document.addEventListener('scroll',initcheckimg)</script></html>

测试效果图

3. 分级区域
思路1 将屏幕分割到不同的区域

假设分为三屏幕(这个思想来自google的列表排名)这样就可以监测一张图片在当时网页展示的时候的位置。
理解为产品排名,第一名和第五名的产品,尽管可能都被看到,但是第一名的位置永远那么闪耀。

1. 默认的第一屏幕
2. 第二屏幕
3. 第三屏幕
4. 超过三屏幕

优势:可以将产品按屏幕出现的维度进行统计数据。
局限:必须考虑移动版,ipad版,不同显示器尺寸下,定义的第一屏幕是否相同。

思路2 利用排序ID
页面上的所有产品有个自然的排序,每次传给监测系统带上这个ID排序。这样分析的时候就知道这个产品大概在什么位置。

优势:跨越了屏幕分类的复杂。
局限:这粒度的监测,只适合特定页面产品排名固定的情况。如果遇到多个列表页,某个产品都出现了,且ID排序不一致,就会引起监测数据的混乱。

如果考虑客户的网速,应该将判断加载和判断看见同时使用。具体还需要在实际应用中不停的测试,修改细节。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
css3实现鼠标移入图片动效
简单了解css3样式表写法和优先级
11种常用css样式之表格和定位样式学习
一篇文章教会你使用html+css3制作炫酷效果
Ext消息提示框,显示几秒后自动消失
手机端密码框
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服