移动端H5开发中的常见问题处理
1、问题之合成海报:
功能技术:http://html2canvas.hertzen.com
问题描述:合成模糊、合成区域内容错位,合成不完整,合成边缘白条等。
解决方案:如有页面布局正常合成错位的,可以检查合成的根节点是否使用了transform属性,尝试不用这个属性再去合成。
图片缺失和模糊参考如下代码,合成前递归加载图片,并在参数处设定倍数。
注意:合成区域内的图片需为本地图片
海报大小设置:(需根据实际可以截取的图像调整最低高度)
var webWidth = document.documentElement.clientWidth;
var webHeight = document.documentElement.clientHeight;
var pageW_max = webWidth * 1.93;
var pageH_d=(webHeight+50) > pageW_max ? pageW_max : webHeight+50;
pageH_d = pageH_d < (pageW_max * 0.9) ? (pageW_max * 0.9) : pageH_d;
$(".posterCompoundPage").css("height",pageH_d+"px");
//准备海报
function poster(){ var posterImgList = [
"h5/img/poster/1.jpg",
"h5/img/poster/2.png",
"h5/img/poster/3.png",
"h5/img/poster/4.png",
"h5/img/poster/5.png",
"h5/img/poster/6.png",
"h5/img/poster/7.png",
"h5/img/poster/8.png",
"h5/img/poster/9.png" ]; superLoadImg(posterImgList,0); } //递归load图片
function superLoadImg(imgList,imgIndex){ if(imgIndex < imgList.length){
var imgObj = new Image();
imgObj.src = imgList[imgIndex];
imgObj.onload = function () {
console.log("加载图片"+imgIndex);
if(imgIndex == imgList.length- 1){
finalCompoundPoster();
}else{
imgIndex=imgIndex+1;
superLoadImg(imgList,imgIndex);
}
}
} }
//合成海报最终
function finalCompoundPoster(){
setTimeout(function(){
var opt = {
scale:2,
width:$('#poster').width() - 1,//设置canvas尺寸与所截图尺寸相同,防止白边
height:$('#poster').height() - 1,//防止白边
}
html2canvas(document.querySelector("#poster"),opt).then(function(canvas) { try{
canvas.style.width="100%";
canvas.style.height="100%";
var saveImage = canvas.toDataURL('image/jpeg'); $('#posterImg').attr("src",saveImage); }catch(err){
alert(err);
}
})
},200);
}
2、问题之ios输入框弹起弹不下:
给每个input或输入框元素加上一个类名(比如inputEle),在js中加上如下代码:
var msgbox = $('.inputEle');
msgbox.on('focusin', function() {
//软键盘弹出的事件处理
if (navigator.userAgent.indexOf('iPhone') != -1) {
tanchu();
}
})
msgbox.on('focusout', function() {
//软键盘收起的事件处理
if (navigator.userAgent.indexOf('iPhone') != -1) {
shouqi();
}
})
var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight;
$(window).resize(function(){
//键盘弹起与隐藏都会引起窗口的高度发生变化
var resizeHeight=document.documentElement.clientHeight || document.body.clientHeight;
if(resizeHeight-0<originalHeight-0){
}else{
//苹果弹下去
/* shouqi(); */
}
});
function tanchu() {
/* $("body,html").css("height", $('body').height() + $('body').height() / 4); */
}
function shouqi() {
/* $("body,html").css("height", "100%"); */
window.scroll(0, 0);
}
3、问题之音乐自动播放:
//音乐播放
var audioTag=$("#musicEvent").get(0);
var isPlay=false;
audioTag.play();
/*audioTag.addEventListener("canplay",function(){
if(!isPlay){
audioTag.play();
isPlay=true;
}
},false);*/ $(".musicImg").click(function(){ if(audioTag.paused){
audioTag.play();
$(this).addClass("active");
}else{
audioTag.pause();
$(this).removeClass("active");
}
}) //针对UC浏览器,期待用户误点一下屏幕或点击开始游戏按钮后使音频播放
// $('html').one('touchstart',function(){
// audioTag.play();
// }) //解决ios微信浏览器默认播放音乐
document.addEventListener("WeixinJSBridgeReady", function () { audioTag.play(); }, false);
4、问题之video视频在手机中全屏播放影响体验:
解决:在video标签中加以下参数:
解决全屏播放加x5-playsinline="true"、webkit-playsinline="true"、playsinline="true"这三个参数就好,另外没有必要不要再加(类似x5-video-player-fullscreen="true")额外的参数,不然还是会全屏播放。
更多的视频处理可以参考使用:https://videojs.com
<video controls class="playVideoEntity baseObj" x5-playsinline="true" webkit-playsinline="true" playsinline="true" src="video/video.mp4" poster=""></video>
5、关于长屏短屏页面中元素太满的处理方式
通过获取屏幕的宽高比,来适当调整元素的定位或大小
var webWidth = document.documentElement.clientWidth;
var webHeight = document.documentElement.clientHeight;
var screenRatio = webWidth / webHeight;
console.log('宽高比:',screenRatio);
if(screenRatio > 0.6){ if(screenRatio > 0.63){ } }
6、阻止页面默认事件
document.body.addEventListener('touchmove', function (e) {
e.preventDefault(); //阻止默认的处理方式(阻止下拉滑动的效果)
}, {passive: false}); //passive 参数不能省略,用来兼容ios和android
$('.pageBox').on('touchmove', function (event) {
event.preventDefault();
});
7、移动和pc端两个页面地址的切换
<script>
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
window.location.href="mobile/index.html";
}else{
window.location.href="pc/index.html"
}
</script>
移动端H5开发中的常见问题处理的更多相关文章
- 在移动端H5开发中(关于安卓端position:fixed和position:absolute;和虚拟键盘冲突的问题,以及解决方案)
一.在开发移动端webapp时,我们经常会遇到这样的问题,当我们需要在页面底部固定一个logo或者说明时,往往会采用position:fixed进行固定定位或者absolute定位到最底部 这是一个很 ...
- H5开发中的问题总结
最近公司做了一个出行日记的项目,里面的页面十多页,天天加班,做到吐血.总体来说,写页面的时候虽然是十多个页面,其实难度还是在每个页面的特效上.公司是易到用车,出行日记的页面在APP里有生成入口,有兴趣 ...
- H5开发中的故障
本篇博文会不断的收录我在做H5页面时遇到的问题以及解决方案,当然有的问题,我也没有遇到好的解决方案,所以如果你有解决的办法,请务必不吝赐教! H5开发中的故障 微信APP返回按钮不刷新页面 ...
- 第123天:移动web开发中的常见问题
一.函数库 underscoreJS _.template: <ol class="carousel-indicators"> <!--渲染的HTML字符串--& ...
- 移动端H5开发自适应技巧
移动端H5开发,必要要做到自适应各种分辨率的手机,下面由我为大家大致说一下,需要3步走 第一:head标签中添加: <meta name="viewport" content ...
- 移动端H5开发遇到的问题及解决方法
本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...
- 移动端 h5开发相关内容总结(三)
之前写过两篇开发中遇到的问题和解决方案.当时是CSS 和 JavaScript 分开写的.现在写这篇文章的时候感觉很多内容都是有内在联系的,所以不好分开. 给大家分享一下这半年来的感受吧: 知道和理解 ...
- h5开发中,利用微信或者QQ登陆以后获取用户头像在canvas画布显示问题
在实际开发上先的h5页面产品中,总会遇到各种坑,好多坑都是安卓和iPhone端兼容的问题(用电脑谷歌浏览器输入 chrome://inspect/#devices可以用手机USB调试,打开) eg: ...
- H5开发中遇到的问题及解决办法
记不得什么时候进行H5开发的学习了,只知道是从2016年8月1日开始修复Bug,计划每天把学到的东西以及遇到问题时候的解决方案都记录下来,希望自己能够坚持下去,每天积累一点,希望有所进步吧. 1.Th ...
随机推荐
- 在Service中创建全局Dialog对话框
需要使用到悬浮窗权限 val builder: AlertDialog.Builder = AlertDialog.Builder(this)builder.setMessage("from ...
- 批量反编译.class
使用dj java Decompiler软件,安装后,安装目录会有个jad.exe程序 控制台执行: jad -o -r -dF:\output_dir -sjava F:\class_root_di ...
- zabbix的搭建及操作(3)监控 MySQL 及 HTTP 状态监控
书接上回 -- 详情点击 Server端以配置好 mariadb(MySQL) 及 http 服务 Zabbix实现监控 mysql 数据库 server服务器端配置 vim /usr/local/z ...
- 怎么用MindManager制作议论文思维导图
大家都写过作文吧,做小学到高考到大学,这是谁也摆脱不了的,但是大家写作文会提前把自己的思路整理出来吗?让自己行文更为顺畅,作文更为流利吗?特别是关于议论文,一直是高考写作的一个重点篇目,写好议论文,就 ...
- H5系列之contenteditable
其实这个属性很简单,既然把它放到一个单独的文章来说,他肯定有一些注意点要讲 兼容性很好,兼容所有主流浏览器. 用法很简单,只需要给你需要的标签填上即可. <div contenteditable ...
- hashmap(有空可以看看算法这本书中对于这部分的实现,很有道理)
//转载:https://baijiahao.baidu.com/s?id=1618550070727689060&wfr=spider&for=pc 1.为什么用HashMap? H ...
- Mat使用详解
背景 笔记中躺了很久的文章,今天用到Mat时发现之前写的内容还算清晰,分享出来; 如下所举例使用的dump文件是针对之前使用的ignite库溢出时的dump文件:关于ignite的概念此处不再叙述,本 ...
- High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis
论文来源:CVPR 2017 摘要 之前方法的缺点:之前的方法是基于语义和上下文信息的,在填充较大holes的表现得很好,能够捕获更高级的图像特征,但是由于内存限制和难以训练网络的因素,只能处理分辨率 ...
- 天池新闻推荐比赛1:赛题理解+baseline
天池新闻推荐比赛1:赛题理解+baseline 一.比赛信息 比赛链接: https://tianchi.aliyun.com/competition/entrance/531842/inform ...
- LeetCode 010 Regular Expression Matching
题目描述:Regular Expression Matching Implement regular expression matching with support for '.' and '*' ...