移动端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 ...
随机推荐
- java的for循环中遇到异常抛出后继续循环执行
@Testpublic void loopTryCatchTest() throws Exception { Map<String, Object> a = new HashMap(); ...
- How to realize one's ambition
Work Overtime Can it work? To some extent, it parhaps works very well. What if you do little job and ...
- FL Studio通道预设之采样预览
FL Studio采样预览栏在采样设置窗口的最底端,它能很好地显示 出载入采样的波形也可以将波形显示改为频谱显示.它里面显示出的是经过预处理效果栏处理后的波形或频谱图.我们在波形显示器下面还可以看到波 ...
- Vegas常见问题解答,如何处理预览卡顿
制作视频并不是简单的拼拼凑凑,很多时候我们都需要给视频加上一些视频特效或转场等效果,如果只是图片素材的话,还不会出现卡顿的现象,但是当你给视频添加了效果后,在预览窗口看到的就是非常卡顿了.除了本身计算 ...
- 使用ABBYY FineReader将文档保存为电子书形式
运用ABBYY FineReader 15的OCR识别技术,不仅能将PDF文档.图像.扫描页面等保存为可编辑的格式,方便用户的进一步编辑使用:而且还能直接转换为电子书的格式,方便用户使用更为便携的电子 ...
- MathType中怎么编辑韩文字符
用MathType编辑公式,所涉及到符号与字母一般都是英文字母与数字,或者使用希腊字母,当然还有很多使用中文的情况.但是不仅如此,我们在使用MathType时,除了这些字符之外,还可以输入韩文或者日文 ...
- HDU4632 Palindrome subsequence
标签(空格分隔): 区间qp Palindrome subsequence \[求一个string的 回文子序列 的个数 \] 少废话,上代码. #include<bits/stdc++.h&g ...
- SRX_Test_2_key
转载自 Livedream YBT1396 #include<iostream> #include<map> #include<queue> #include< ...
- 为什么90%的大学都要求计算机专业学习C语言?
编程语言是编程的工具,计算机相关专业的学生必须具备足够的编程能力.当然,关于"最好语言"的争论从来没有休止过,这里要强调一下:语言的选择真的没那么重要,学习语言的过程最重要是语言的 ...
- idea 安装教程
臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭臭是猪臭 ...