移动网页广告引入mraid.js使用指南
在网上找mraid相关资料,相对比较少,大多都是API介绍,概念介绍等,没有一份详细的移动端网页广告使用教程,经过自己两天的摸索,完成了开发的移动端网页版的广告加入mraid功能。
背景:
我开发了移动端网页展示的广告,由于产品的要求,要实现广告中的视频在用户看到的时候才会继续播放,不看的时候不会播放,而默认设置的video 的autoplay自动播放会在用户打开的情况下,即使看不到也是种播着,影响了用户看到的广告效果,即可能会降低点击率和转化率。
而mraid具有天然的优势,mraid可以识别用户是否在看着广告,可以识别用户的点击跳转,可以出现关闭按钮点击关闭,可以缩放广告等,推荐mriad中文版教程:
https://github.com/graypants/mraid_cn/blob/master/mraid_cn.md
开始
1、在网页中首先引入mraid.js【直接引入即可,不需要在本地放mraid.js,页面在支持mraid的app中会自动注入】
<script src="mraid.js"></script>
2、在PC端开发完成之后,不方便测试mraid效果,推荐这个网站:http://webtester.mraid.org/
可以在线设置广告位的宽高,粘贴代码,render之后查看效果。
3、mraid实现视频用户浏览时播放,并且点击下载mraid跳转完整代码:
let v = document.getElementsByTagName("video")[0];//获取video元素
let ad_pic = document.getElementsByClassName("ad_pic")[0];//视频暂停时的图片
// 视频播放
function videoPlay() {
let videoIsPlay = v.play();
if (videoIsPlay !== undefined) {
videoIsPlay.then(() => {//通过异步的方式避免报错
ad_pic.style.display = "none";
}).catch((err) => {
console.log(err);
ad_pic.style.display = "none";//默认暂停时的图片隐藏
//视频元素可以选择静音后再播放,提示用户打开声音
v.muted = true;
v.play();
});
}
}
//图片点击播放
function cardClick(event) {
"use strict";
ad_pic.addEventListener(event, function () {
videoPlay();
v.className = '';
}, true);
}
function adPic() {
cardClick('tap');
cardClick('click');
}
// mraid判断
function mraidPlay() {
"use strict";
if (mraid.getState() === 'loading') {
mraid.addEventListener('ready', onSdkReady);
} else {
onSdkReady();
}
function onSdkReady() {
if (mraid.isViewable()) {
videoPlay();
} else {
mraid.addEventListener('viewableChange', function (viewable) {
if (viewable) {
mraid.removeEventListener('viewableChange');
videoPlay();
}
});
}
}
}
在使用video.play()方法的时候,有时候会出现报错:
Uncaught (in promise) DOMException
4、mraid代码实现的流程:
先判断mraid状态是否为loading,如果为loading要给mraid注册ready事件,在ready事件中进行相应mraid代码执行,比如判断用户是否在浏览广告,如果不是loading状态,则说明是ready状态,直接执行mraid操作的代码。
mraid.js,所有事件发生都要在ready之后,mraid.open也需要ready之后,只要引入了mraid.js,就可以识别mraid对应的方法存在,但是事件的执行要在ready事件之后。
移动网页广告引入mraid.js使用指南的更多相关文章
- JS一般般的网页重构可以使用Node.js做些什么(转)
一.非计算机背景前端如何快速了解Node.js? 做前端的应该都听过Node.js,偏开发背景的童鞋应该都玩过. 对于一些没有计算机背景的,工作内容以静态页面呈现为主的前端,可能并未把玩过Node.j ...
- 【vue.js权威指南】读书笔记(第一章)
最近在读新书<vue.js权威指南>,一边读,一边把笔记整理下来,方便自己以后温故知新,也希望能把自己的读书心得分享给大家. [第1章:遇见vue.js] vue.js是什么? vue.j ...
- 学习Nodejs:《Node.js开发指南》微博项目express2迁移至express4过程中填的坑
<Node.js开发指南>项目地址https://github.com/BYVoid/microblog好不容易找到的基础版教程,但书中是基于express2的,而现在用的是express ...
- Three.js开发指南---创建,加载高级网格和几何体(第八章)
本章的主要内容: 一, 通过Three.js自带的功能来组合和合并已有的几何体,创建出新的几何体 二, 从外部资源中加载网格和几何体 1 前面的章节中,我们学习到,一个几何体创建的网格,想使用多个材质 ...
- 《Three.js 入门指南》3.1.2 - 一份整齐的代码结构以及使用ORBIT CONTROLS插件(轨道控制)实现模型控制
3.1.2 正式代码结构 & ORBIT CONTROLS插件(轨道控制) 说明 本节内容属于插入节,<Three.js入门指南>这本书中,只是简单的介绍了一些概念,是一本基础的入 ...
- 《Three.js 入门指南》3.0 - 代码构建的最基本结构。
3.0 代码构建的最基本结构 说明: 我们必需首先知道,Three.js 的一些入门级概念: 我们需要知道,OpenGL 是一套三维实现的标准,为什么说是标准,因为它是跨平台,跨语言的.甚至CAD以及 ...
- 前端网页打印插件print.js(可导出pdf)
在前端开发中,想打印当前网页的指定区域内容,或将网页导出为多页的PDF,可以借助print.js实现,该插件轻量.简单.手动引入.不依赖其他库.示范项目github:https://github.co ...
- -Three.js开发指南---用three.js创建你的第一个三维场景(第一章)
本章主要做了下面的工作 1 生成一个简单的场景,该场景的物体只有平面和坐标轴 2 在第一个demo的基础上添加光源和方块物体,并生成阴影 3 在第二个demo的基础上,增加动画,使得方块进行旋转 4 ...
- 重温《js权威指南》 第4、5、6章
第四章 表达式和运算符 4.2 对象和数组的初始化表达式 数组: [] [3,7] [1+2,3+4] [[1,2,3,],[4,5,6],[7,8, ...
随机推荐
- token和盐
// 盐,加密后密码获取 Map<String, String> map = new HashMap<String, String>(); map.put(&quo ...
- python控制流
1. if...elif...else: 语法: if 判断条件: 语句... elif 判断条件: 语句... else: 语句... #elif语句可以有0个或多个 2. while和for循环: ...
- javascript parseUrl函数解析url获取网址url参数
function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, pr ...
- 解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。
本文是原创文章,未经允许,请勿转载. 原来程序中是通过运行exe,然后加上参数,然程序运行起来的.也就是main(int argc, char** argv)这里是通过argv参数是从命令行 传过来的 ...
- Linux之源码安装nginx,并按照作业一描述的那样去测试使用
作业五:源码安装nginx,并按照作业一描述的那样去测试使用 [root@localhost nginx]# yum install gcc-* glibc-* openssl openssl-dev ...
- GMA Round 1 简单的线性规划
传送门 简单的线性规划 已知D(x,y)满足$\left\{\begin{matrix}x>-3\\ y>1\\ x+y<12\end{matrix}\right.$ 求$\frac ...
- MiniUI破解方法
解决JQuery MiniUI前端库到期alert弹窗 MINIUI的到期提示是通过JS的Alert 方法弹出的. 那么我们可以不可以截获所有Alert方法,过滤文本.然后….你们懂得 我们只需要在页 ...
- PDF.js 分片下载的介绍2:分片下载demo
上一个章节,简要说了以下分片下载的几个特性.今天主要用示例说明一下pdf.js分片下载. 服务器环境: php7.2 nginx 1.14 ubuntu 18.04测试浏览器:谷歌浏览器 70.0.3 ...
- MyBatis(五):mybatis关联映射
Mybatis中表与表之间的关系分为一下4类: 1)一对一 2)一对多 3)多对一 4)多对多 创建数据Demo表 数据库表: 用户表user:记录了购买商品的用户信息. 订单表orders:记录了用 ...
- [数位dp] spoj 10738 Ra-One Numbers
题意:给定x.y.为[x,y]之间有多少个数的偶数位和减去奇数位和等于一. 个位是第一位. 样例: 10=1-0=1 所以10是这种数 思路:数位dp[i][sum][ok] i位和为sum 是否含有 ...