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开发中的常见问题处理的更多相关文章

  1. 在移动端H5开发中(关于安卓端position:fixed和position:absolute;和虚拟键盘冲突的问题,以及解决方案)

    一.在开发移动端webapp时,我们经常会遇到这样的问题,当我们需要在页面底部固定一个logo或者说明时,往往会采用position:fixed进行固定定位或者absolute定位到最底部 这是一个很 ...

  2. H5开发中的问题总结

    最近公司做了一个出行日记的项目,里面的页面十多页,天天加班,做到吐血.总体来说,写页面的时候虽然是十多个页面,其实难度还是在每个页面的特效上.公司是易到用车,出行日记的页面在APP里有生成入口,有兴趣 ...

  3. H5开发中的故障

    本篇博文会不断的收录我在做H5页面时遇到的问题以及解决方案,当然有的问题,我也没有遇到好的解决方案,所以如果你有解决的办法,请务必不吝赐教! H5开发中的故障       微信APP返回按钮不刷新页面 ...

  4. 第123天:移动web开发中的常见问题

    一.函数库 underscoreJS _.template: <ol class="carousel-indicators"> <!--渲染的HTML字符串--& ...

  5. 移动端H5开发自适应技巧

    移动端H5开发,必要要做到自适应各种分辨率的手机,下面由我为大家大致说一下,需要3步走 第一:head标签中添加: <meta name="viewport" content ...

  6. 移动端H5开发遇到的问题及解决方法

    本篇文章给大家带来的内容是关于移动端H5开发遇到的问题及解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 微信分享签名错误invalid signature vue单页应用hi ...

  7. 移动端 h5开发相关内容总结(三)

    之前写过两篇开发中遇到的问题和解决方案.当时是CSS 和 JavaScript 分开写的.现在写这篇文章的时候感觉很多内容都是有内在联系的,所以不好分开. 给大家分享一下这半年来的感受吧: 知道和理解 ...

  8. h5开发中,利用微信或者QQ登陆以后获取用户头像在canvas画布显示问题

    在实际开发上先的h5页面产品中,总会遇到各种坑,好多坑都是安卓和iPhone端兼容的问题(用电脑谷歌浏览器输入  chrome://inspect/#devices可以用手机USB调试,打开) eg: ...

  9. H5开发中遇到的问题及解决办法

    记不得什么时候进行H5开发的学习了,只知道是从2016年8月1日开始修复Bug,计划每天把学到的东西以及遇到问题时候的解决方案都记录下来,希望自己能够坚持下去,每天积累一点,希望有所进步吧. 1.Th ...

随机推荐

  1. 《HarmonyOS设备开发入门手册》

    HarmonyOS设备开发入门手册-更新 [欢迎大家点击下载] 作者:连志安 想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://harmonyos.51cto. ...

  2. JetCache 源码分析

    一.简介 JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用. JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL.两级缓存.分布 ...

  3. 常见MFC函数

    1.MFC常用函数:WinExec()ExitWindowsEx()GlobalMemoryStatus()GetSystemInfo()GetSystemDirectory()GetWindowsD ...

  4. phpstudy搭建网站只能访问首页,其他路由访问404

    今天博主遇到了一个很奇葩的问题,电脑下载了一个phpstudy搭建网站,框架用的是tp,但是除了输入域名能访问,其他页面都访问不了 经过博主的疯狂问大佬,以及百度,终于解决了这个问题 这次出现问题的原 ...

  5. Fruity Parametric EQ 2使用说明(一)——FL Studio插件教程

    FL Studio插件教程-Fruity Parametric EQ 2使用说明(一) Fruity Parametric EQ 2均衡器,是一款我们在FL Studio制作音乐时经常会用到的插件,它 ...

  6. Math对象-JavaScript

    Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法.Math 不是一个函数对象. Math 用于 Number 类型. Math 的所有属性与方法都是静态的. 属性 Math.E 欧拉常数 ...

  7. iOS中如何使定时器NSTimer不受UIScrollView滑动所影响

    以下是使用 scheduledTimerWithTimeInterval 方法来实现定时器 - (void)addTimer { NSTimer scheduledTimerWithTimeInter ...

  8. 知识解析:C语言函数有一些什么?为你呈现最全函数大全

    大家双节快乐呀~国庆节过去了一半,大家放了几天假呀?玩的开心吗? 如果假日没有其他安排,不要宅在家虚度光阴哦~看看我的文章或者视频学习一些知识吧~   今天为大家分享C语言库函数知识. 以下图片以字母 ...

  9. Prometheus+Grafana+Alertmanager实现告警推送教程 ----- 图文详解

    前言 本文主要介绍的是Prometheus采集数据,通过Grafana加上PromQL语句实现数据可视化以及通过Alertmanage实现告警推送功能.温馨提示,本篇文章特长,2w多的文字加上几十张图 ...

  10. Asp.NetCore之AutoMapper基础篇

    应用场景 现在由于前后端技术的分离,后端程序员在使用ORM框架开发后台API接口的时候,往往会将数据库的"数据模型"直接提供给前端.而大多数时候,可能这些数据并不能够满足前端展示的 ...