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 相关文章推荐
jQuery的运行机制和设计理念分析
Apr 05 Javascript
jQuery获得内容和属性示例代码
Jan 16 Javascript
防止jQuery ajax Load使用缓存的方法小结
Feb 22 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
JavaScript实现无限级递归树的示例代码
Mar 29 Javascript
js实现适配移动端的拖动效果
Jan 13 Javascript
vue实现给div绑定keyup的enter事件
Jul 31 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php中foreach结合curl实现多线程的方法分析
2016/09/22 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Python 文件操作实现代码
2009/10/07 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
python实现手机通讯录搜索功能
2018/02/22 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
基于python生成器封装的协程类
2019/03/20 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python如何实现复制目录到指定目录
2020/02/13 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
python 基于opencv实现图像增强
2020/12/23 Python
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
经典公益广告词
2014/03/13 职场文书
精彩广告词大全
2014/03/19 职场文书
公证委托书模板
2014/04/03 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
联欢会开场白
2015/06/01 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python