vue2手机APP项目添加开屏广告或者闪屏广告


Posted in Javascript onNovember 28, 2017

一般项目里,有的会在启动的时候加开屏广告或者闪屏广告。我们是在index.html通过定位来做的。如下:

<style media="screen">
 #entry {
 width: 100%;
 height: 100%;
 z-index: 200;
 position: relative;
 }
 #entryAdv {
 display: none;
 }
 #entryTim {
 position: fixed;
 width: 2.2rem;
 line-height: 0.68rem;
 font-size: 0.32rem;
 z-index: 400;
 text-align: center;
 border-radius: 2rem;
 top: 0.5rem;
 right: 0.5rem;
 border: 1px solid #ccc;
 }
</style>
<body>
<!-- 开屏广告 -->
<section class="adv" id="entryAdv">
 <img id="entry">
 <p id="entryTim"></p>
</section>
<!-- 入口元素 -->
<section id="app"></section>
</body>

然后我们需要单独写一份js文件,跟main.js是同级目录的,具体代码如下:

import api from './fetch/api'
import store from './store/index'
// 修改开屏广告图片尺寸
let advWidth = document.documentElement.clientWidth;
let advHeight = document.documentElement.clientHeight;
let entryEl = document.getElementById('entry');
entryEl.style.widht = advWidth + 'px';
entryEl.style.height = advHeight + 'px';
let queryURL = window.location.href.split('?')[1];
// 判断是否为分享页面
if (queryURL) {
 let queryArr = queryURL.split('&');
 let query = {};
 for (let i = 0; i < queryArr.length; i++) {
 query[queryArr[i].split('=')[0]] = queryArr[i].split('=')[1]
 }
 if (Number(query.showTitle)) {
 // 分享页面中 H5入口(我们项目中做了分享功能,若是从原生APP分享进入H5页面的,也需要加开屏广告)
 api.commonApi('后台接口', '传参数')
  .then(res => {
  let keyArr = [];
  for (let key in res.data) {
   keyArr.push(key);
  }
  if (keyArr.length == 0) {
   return;
  }
  openAdv(res);
  });
 } else {
 // 分享页面中 原生入口
 // 查看query中是否带有token,进行登录判断并将token存入vuex
 if (query.TOKEN != '' && query.TOKEN != 'null') {
  store.dispatch('storeToken', query.TOKEN);
 }
 }
} else {
 // 不是分享页面的入口
 api.commonApi('后台接口', '传参数')
 .then(res => {
  let keyArr = []
  for (let key in res.data) {
  keyArr.push(key);
  }
  if (keyArr.length == 0) {
  return;
  }
  openAdv(res);
 });
}
function openAdv(res) {
 entryAdv.style.display = 'block';
 document.body.style.overflowY = 'hidden';
 // 阻止滑动执行
 document.body.ontouchmove = function(ev) {
 ev.preventDefault();
 };
 let list = res.data.retList;
 if (list && list.length == 0) {
 entryAdv.style.display = 'none';
 document.body.style.overflow = 'auto';
 document.body.ontouchmove = function(ev) {
  ev.stopPropagation();
 };
 }
 let time = (res.data.SPJG || 5000) / 1000;
 // let time = res.data.SPJG;
 let ADV_list = [];
 let BCcontextPathSrc = store.state.common.BCcontextPathSrc;
 switch (res.data.ADV_TYPE) {
 // 开屏直接跳过
 case '1':
 {
  let ImgList = [];
  for (let i = 0; i < list.length; i++) {
  ImgList.push(BCcontextPathSrc + res.data.retList[i].ADV_IMG_URL);
  ADV_list.push(res.data.retList[i].ADV_URL);
  }
  let count_down = time / list.length;
  let ImgNum = 0;
  let timer = setInterval(() => {
  switch (ImgList.length) {
   case 1:
   break;
   case 2:
   {
   if (time % 3 == 0) {
    ImgNum++;
   }
   }
   break;
   case 3:
   {
   if (time % 2 == 0) {
    ImgNum++;
   }
   }
   break;
   case 4:
   {
   if (time % 1 == 0) {
    if (ImgNum > ImgList.length - 2) break;
    ImgNum++;
   }
   }
   break;
   default:
   {
   if (time % 1 == 0) {
    if (ImgNum > ImgList.length - 2) break;
    ImgNum++;
   }
   }
   break;
  }
  if (time <= 0) {
   clearInterval(timer);
   entryAdv.style.display = 'none';
   document.body.style.overflowY = 'auto';
   document.body.ontouchmove = function(ev) {
   ev.stopPropagation();
   };
  }
  entry.src = ImgList[ImgNum];
  entryTim.innerHTML = '跳过 ' + time + 's';
  entry.addEventListener('click', function() {
   window.location.href = ADV_list[ImgNum];
  }, false);
  time--;
  }, 1000);
  entryTim.addEventListener('click', function(ev) {
  ev.preventDefault();
  clearInterval(timer);
  entryAdv.style.display = 'none';
  document.body.style.overflowY = 'auto';
  document.body.ontouchmove = function(ev) {
   ev.stopPropagation();
  };
  }, false);
 }
  break;
 // 闪屏广告
 case '2':
 同上开屏广告,可根据贵公司要求来更改
 }
};
setTimeout(() => {
 require('./main.js');
}, 300)

这样就完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
javascript实现简单的鼠标拖动效果实例
Apr 10 Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
div实现自适应高度的textarea实现angular双向绑定
Jan 08 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
May 02 Javascript
详解vue 组件之间使用eventbus传值
Oct 25 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
webuploader分片上传的实现代码(前后端分离)
Sep 10 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 Javascript
浅谈vue中慎用style的scoped属性
Nov 28 #Javascript
元素全屏的设置与监听实例
Nov 28 #Javascript
vue2实现数据请求显示loading图
Nov 28 #Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 #Javascript
ligerUI---ListBox(列表框可移动的实例)
Nov 28 #Javascript
基于vue2实现上拉加载功能
Nov 28 #Javascript
微信小程序模板和模块化用法实例分析
Nov 28 #Javascript
You might like
用PHP调用Oracle存储过程
2006/10/09 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
jquery 插件开发备注
2010/08/27 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
详解VUE调用本地json的使用方法
2019/05/15 Javascript
python实现的希尔排序算法实例
2015/07/01 Python
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
python读取LMDB中图像的方法
2018/07/02 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
python3.7 的新特性详解
2019/07/25 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
会计自我鉴定
2013/11/02 职场文书
实验教师岗位职责
2014/02/13 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
导游词之无锡梅园
2019/11/28 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers