`
前端开发编程人员
  • 浏览: 4705 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

移动端开发的一些小问题汇总

阅读更多

原文链接:http://www.gbtags.com/gb/share/9434.htm

 

这几天要做一些模拟app的h5页面给别的app用,有一些很烦人的小问题,这里分享一下。

1:click事件,模拟器上都没问题,但是手机上就是不触发》

也许是为了性能考虑吧,手机上不会去主动的监听click之类的事件,你需要在监听的dom上css,cursor:pointer```

是的,你需要加css,反正我是怎么也想不到会这样···h5的文档也没看全,也许里面有写吧。

具体的解决链接:

http://stackoverflow.com/questions/3705937/document-click-not-working-correctly-on-iphone-jquery

 

2:overflow问题

这是个很复杂,很烦人的东西,即使你给了body一个overflow:hidden; 当有的元素超过了右边框——注意是右边——也会出现滚动条。

这里解决方法有很多种,但是真的要根据具体的情况来定。有时候他对你本身需要滑动的元素是有影响的。等有时间我想详细的研究一下他。

具体的解决方法:

http://stackoverflow.com/questions/14270084/overflow-xhidden-doesnt-prevent-content-from-overflowing-in-mobile-browsers

 

3:你的active伪类不起作用

你的:active伪类做的点击态样式在手机上失效了。

你可以在 body或者需要active的dom上加ontouchstart=""

这样浏览器会把你的dom认为是button,也就会为它加上active了。

当然你也可以用fastclick插件,而且模拟tap,我也推荐用它。

具体的解决方法:

http://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari

 

4:min-height的继承问题

这不是一个h5的问题,但是也是在这次中正好遇到的。

你也许会给一个元素一个 min-height,然后你会发现他的子元素在大部分浏览器——而且是现代浏览器——却不能再继承它了。

也就是父子元素都用了min-height:100%,子元素会得不到预期的高度。

你也有很多种解决方法,比如在用min-height:100%的同时加一个 height:1px,或者用js动态的去加。

但是前者当你元素本身存在overflow:hidden的时候,会抵消到滚动条,后者有效率问题,而且会闪一下。

所以我推荐另一种方法,当你不用去顾虑低版本浏览器,比如在h5上面时。

把父元素的display设定为table,子元素的当然是设定为table-cell。 这样子元素就会自动填充满父元素,而父元素你就可以正常的用min-height了。

具体的解决方法:

http://stackoverflow.com/questions/8468066/child-inside-parent-with-min-height-100-not-inheriting-height

 

5:浏览器后退不刷新

这种情况是以前遇到的,这里也再说一下。

主要会发生在webview里多一点。当你点击后退时候,页面是以缓存形式出现的,而不是刷新后的。很多情况下这不是你预期的效果。

解决方法是用js:

window.onpageshow =function(evt){// If persisted then it is in the page cache, force a reload of the page.if(evt.persisted){ document.body.style.display ="none"; location.reload();}};

 onpageshow每次页面加载都会触发,无论是从缓存中加载还是正常加载。这是他和onload的区别

persisted判断页面是否从缓存中读出,利用这两个属性就可以很好地完成我们的要求。

具体解决方法:

http://stackoverflow.com/questions/7988967/problems-with-page-cache-in-ios-5-safari-when-navigating-back-unload-event-not

 

6:webview中viewport的 width=xxx失效?

第一是要查看webview的设置。是否设置了setUseWideViewPort(true);

第二,如果设置了,就查看你是否用了user-scaleable=0|no,网上说他会和之前说的那个属性有冲突,我试验的结果是设置后 scale会变成1而不是自适应。具体的我也没太深去验证,因为是给别人的app上接入,我不能做太多的试验。

总之如果你发现所有的手机浏览器都好用,但是碰到webview就失效的时候可以尝试一下去掉user-scaleable或者用下面的代码:

var ww =( $(window).width()< window.screen.width )? $(window).width(): window.screen.width;//get proper widthvar mw =480;// min width of sitevar ratio = ww / mw;//calculate ratioif( ww < mw){//smaller than minimum size $('#Viewport').attr('content','initial-scale='+ ratio +', maximum-scale='+ ratio +', minimum-scale='+ ratio +', user-scalable=yes, width='+ ww);}else{//regular size $('#Viewport').attr('content','initial-scale=1.0, maximum-scale=2, minimum-scale=1.0, user-scalable=yes, width='+ ww);}

提出user-scaleable问题的:

http://stackoverflow.com/questions/21460623/use-meta-viewport-width-in-android-webview

 提出代码解决方法的:

 http://stackoverflow.com/questions/8735457/scale-fit-mobile-web-content-using-viewport-meta-tag

 

7:touchmove的target不跟着变动?

这也是很早前遇到的问题。

确实是不变动的,和mousemove不同,具体的解决方法:

document.elementFromPoint(event.clientX,event.clientY);

新的方法,查看当前所在坐标所穿过的element。

具体解决方法:

http://stackoverflow.com/questions/3918842/how-to-find-out-the-actual-event-target-of-touchmove-javascript-event

 

8:兼容ios9的应用跳转方案

在这之前,我们会在iframe中模拟跳转链接,这样就会跳转出去而还留在当前的页面上。而且不会引起页面的任何变化。

但是当ios9以后,对iframe做了一些限制,导致这种最优的方案失效了。

所以我们需要用另一种相对讨巧的方法:

$('a').click(function() { location.href = '自定义 URL scheme'setTimeout(function() { location.href = '下载页'}, 250);setTimeout(function() { location.reload(); }, 1000); }

这样做只是为了避免点击确认框,也就是为了不让页面有任何的变化。

具体解决方法:

http://www.tuicool.com/articles/2Qjaay

 

 

以上就是这次做h5的收获啦,下面贴的链接都有较详细的问题描述以及原理解答,下面的讨论也能帮助你更加全面的理解问题。希望遇到问题的同学可以点开来看一下。

 

分享到:
评论

相关推荐

    移动端开发教程之像素的显示问题汇总

    在移动端开发中,像素的显示问题是一个至关重要的概念,因为它直接影响到用户界面的视觉效果和交互体验。本文将深入探讨像素密度(PPI)、设备像素(DP)、设备像素比(DPR)以及CSS像素和视口(Viewport)等相关...

    移动端web开发技巧与经验分享

    移动端web开发技巧汇总与经验分享,已经涵盖了web移动端开发的方方面面,web移动端开发不可多得的干货,值得一看。(1);initial-scale maximum-scale=1.0;user-scalable u2033name=”viewport”/&gt;(2)”name=”apple-...

    分页式移动端微信小商城购物程序源码.zip

    分页式移动端微信小商城购物程序源码是一个用于构建微信小程序的开源项目,适用于开发者学习和研究微信小程序的开发技术。这个源码包含了完整的前端页面和后端接口,旨在实现一个具备分页功能的移动购物平台,用户...

    微信小程序开发资源汇总

    微信小程序是一种轻量级的应用开发平台,主要针对移动端,由腾讯公司推出,旨在提供便捷的、无需下载安装即可使用的应用体验。在这个“微信小程序开发资源汇总”中,我们可以找到一系列关于构建微信小程序的相关资料...

    数据质控移动端需求1

    开发人员需要考虑如何优化数据传输,减少移动端的加载时间,同时使用图表库(如ECharts或D3.js)在移动端渲染出易于理解的图形。 最后,针对移动端屏幕大小的界面设计不容忽视。移动设备的屏幕尺寸各异,因此需要...

    react移动端H5点餐项目源码首页,商品列表,商品详情,商品购物车汇总.zip

    这个React移动端H5点餐项目源码是一个基于React框架构建的Web应用,旨在提供一个功能齐全的在线点餐...开发者可以通过阅读和修改源码,进一步理解和掌握React开发技巧,以及如何处理前后端数据交互和移动端适配问题。

    2019 防移动端京东 登陆页面 分类页面 购物车页面 注册页面 轮播图

    综上所述,这个资料集为我们揭示了京东移动端在2019年针对不同页面进行的深度优化,不仅涵盖了界面设计,还涉及到了用户体验、技术实现和数据分析等多个层面,对于从事电商或移动应用开发的人员具有较高的学习价值。

    护林员管理系统移动端(手机APP)模块设计报告.pdf

    护林员管理系统移动端(手机APP)模块设计报告旨在设计并开发一款移动端应用程序,旨在帮助护林员更好地完成护林任务。该报告详细介绍了护林员管理系统移动端的模块设计,包括模块汇总、消息管理、巡护管理等模块。 ...

    微信小程序开发资源汇总.zip

    微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要针对移动设备用户,特别是智能手机用户。它旨在提供快速、便捷的服务,用户无需通过应用商店下载安装,只需在微信内搜索或扫描二维码即可使用,极大地...

    微信小程序 实例汇总 完整项目源代码

    微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要应用于移动端,旨在提供便捷的、无需下载安装即可使用的应用体验。本实例汇总包含了多个完整的微信小程序项目源代码,是学习和理解微信小程序开发的宝贵...

    美团点评移动端底层架构实践.pdf

    为了解决这些问题,美团点评引入了Logan系统,它支持日志本地汇总存储、多重上报手段和综合分析,确保了日志的完整性和及时性。 在日志收集方面,Logan系统允许日志的本地存储和后台回捞,同时考虑到了日志大小限制...

    2022微信小程序130个源码分享 解压密码123

    包含移动端商城、小游戏、音乐、地图、小说、网络工具、打卡、页面布局、生成器、新闻应用、信息流、各种小工具等丰富实用的免费源码,部分小程序带有后台,非常适合新手入门微信小程序开发,可以拿去做参考使用,...

    移动端APM产品研发技能.pdf

    异常上报可以帮助开发团队快速定位问题发生的原因和位置,为修复bug提供依据。 5. native inline hook技术:Hook技术是APM中用于深度性能监控的一种手段。通过Hook技术,可以在不修改原有代码的情况下,插入自定义...

    微信小程序带购物车功能 移动开发实现菜单切换,加减数量,汇总金额,实现支付的用例.zip

    微信小程序是一种轻量级的应用开发框架,主要针对移动端,尤其是智能手机平台。在这个“微信小程序带购物车功能 移动开发实现菜单切换,加减数量,汇总金额,实现支付的用例”中,我们将会深入探讨如何在微信小程序...

    WEB前端开发-案例源码汇总(适合初学者).rar

    【标题】"WEB前端开发-案例源码汇总(适合初学者).rar"是一个针对初学者的前端开发学习资源包,包含了多个实际的WEB前端开发案例的源代码。这个压缩包旨在帮助初学者通过实例来理解和掌握前端开发的基础知识。 ...

Global site tag (gtag.js) - Google Analytics