博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信端H5开发整体解决方案
阅读量:5929 次
发布时间:2019-06-19

本文共 1798 字,大约阅读时间需要 5 分钟。

用一周的时间上线了一个基于微信端的H5,把微信内置浏览器的坑几乎都踩了一遍,稍做总结,希望我所遇到的问题,各位同学都不在遇到

视频

禁止视频全屏

图片

不得不说,图片一直都是H5中流量占用的大头,大于500kb的图片在无线端的加载几乎慢成了翔,优化H5的第一步就是,优化图片的显示,目前我用了了两种方式来优化图片

在线压缩

对jgp和png的格式的图片全部压缩一遍,压缩率几乎可以达到百分之五十,对速度的提升非常明显,建议H5上线之前必须进行一次

第三方cdn

cdn的作用就不说了,谁用谁知道,将压缩后的图片存在cdn的空间上面,用户体验又可以提升一大步,如果公司有自己的cdn服务器那是最好的,如果没有的话就去借助七牛或者又拍云之类的服务,个人开发者几乎可以免费使用

关于加载进度

可以毫不夸张的说,所有你看到的H5加载进度,都是假的。javascript根本没有办法精确的计算到页面的加载进度,最多计算出一个大概的值,但我们也并不需要对么精确的值,我们只需要一个最小化的时间期限,只要在这个时间期限之内,可以保证百分之九十以上的概率加载ok就可以了,so,定一个时间,然后随机增加加载进度显示的数字

var load=document.getElementById('loading');  var index=0;  var timer=setInterval(function(){     if(index>5){         clearInterval(timer);         //some code     }else{        load.innerHTML=parseInt(load.innerHTML)+Math.floor(Math.random()*10+10)+'%';        index++;     }  }, 1000)})()

我是这么做的,定了五秒的时间,每秒随机一个10-20之间的整数,加在加载进度上,五秒之后,停止计时器,开始执行最终的业务逻辑

关于背景音乐自动播放

默认情况下,我们添加一段audio自动循环播放的代码是这样的

但是在微信端你这么搞,是行不通的。微信内置浏览器不支持autoplay,必须用一个事件促发才能播放。那么onload会是最佳的促发方式

window.onload=function(){    ···some code    $('#bkMusic')[0].play();}

这里有一个坑,就是如果你在onload里面还有其他的业务逻辑,那么必须先执行其他的业务,最后在执行音频的play(),如果先执行play(), 你的音频会播放,但是其他的逻辑没反应了,至于为什么会这样,有待我继续深入研究

关于动画animation

微信内置浏览器使用的是qq浏览器的X5内核,动画属性并不能完美的兼容,必须添加-webkit-前缀,当然,我们可以使用自动化工具一次性生成所有前缀,那样就更不存在任何问题了,下面贴一段我利用opacity属性做的呼吸灯的动画,很简单的动画,就是不停的改变opacity的值。从透明到不透明再到透明

#light img{    animation: mylight 4s linear  infinite;    -moz-animation: mylight 4s linear  infinite;        -webkit-animation: mylight 4s linear  infinite;        -o-animation: mylight 4s linear  infinite;    }@keyframes mylight{0%   {opacity: 0;}50%  {opacity: 1;}100% {opacity: 0;}}@-webkit-keyframes mylight {0%   {opacity: 0;}50%  {opacity: 1;}100% {opacity: 0;}}

关于动画GPU加速

关于垂直滚动条

常见问题解决

禁止移动端双击会放大屏幕

禁止ios端识别手机号码自动添加下划线

今天补完,先干活

转载地址:http://jqevx.baihongyu.com/

你可能感兴趣的文章
IIS7上传出现乱码问题解决
查看>>
thinkphp中连接oracle时封装的方法无法用
查看>>
黑马程序员-JAVA基础-IO流其他类
查看>>
希望转载Oracle体系结构及备份(一)——了解体系结构
查看>>
简单实现TCP下的大文件高效传输
查看>>
oracle系统包——dbms_random用法
查看>>
生成不重复的随机数的方法
查看>>
使用ActivityManager实现进程管理
查看>>
安装包部署项目简述
查看>>
HipHop PHP简介(转)
查看>>
MySQL-LAST_INSERT_ID();使用注意事项
查看>>
【转】【WPF】 WPF 调用API修改窗体风格实现真正的无边框窗体
查看>>
uboot之run_command简单分析
查看>>
[emacs] org-mode的一些小技巧
查看>>
Android UI(一)Layout 背景局部Shape圆角设计
查看>>
jqueryMobile 动态添加元素,展示刷新视图方法
查看>>
SQL注入小结
查看>>
微信公众平台增加批量获取用户基本信息接口
查看>>
jQuery遍历table中间tr td并获得td价值
查看>>
oracle-odu小试牛刀--恢复drop表的数据
查看>>