在做 iOS 和 Android 的 HTML5 开发时,你都掉到过哪些坑里?

前言

今天浏览知乎问答时,无意间看到了一篇关于html5嵌入iOS和Android遇到各种坑的问题,故整理一下,发给大家。

  • 微信自带的浏览器有点坑,同样的js在其他浏览器下没有问题,但在微信下面一定会出现样式错乱
  • 跟你们讲,最纠结的是安卓程序员用苹果手机或者IOS开发用的安卓手机。。。你们体会一下如何评价用iPhone的安卓开发程序员?
  • 居然没人说html5+video标签在android,ios下微信里的表现,这里面心酸故事多了去了...
  • 最痛恨的是红米手机,ua返回iphone,需要结合platform判断,但是还不准确,导致需要ios和android区别对待的时候就坑了。
  • 是fixed的问题。这个解决办法是尽量不要用,不过ios7及以下才会出现这个问题。某些情况下红米也会有这个问题。(最近刚刚遇到,已经被坑挂了)。3
    、如果你想要使用css3的动画,那么一定要变着方式使用3d gpu加速的方式,不要试着left,height,width这样的元素进行变换了,android4.4以下版本卡死你。
  • ios全线点击会有300毫秒延迟,使用fastclick解决。这个插件最良心了。
  • web app像素眼设计会纠结你1px边框问题。解决办法有相应知乎大牛答过。
  • qq浏览,uc浏览以及ios的浏览器,滚动时不会触发scroll事件,但会触发touchmove。当停止滚动后会出发scroll。
  • 滚动有iscroll插件,但是还是使用原生的比较好。
  • meta功能要用好,禁止缩放,缩放比例,屏蔽电话号码等功能很实用。(手机回答就不列举了)。
  • 如果想要像手机淘宝那样的各个平台看起来展示效果一致,那么就使用rem来做单位。
  • -webkit-tap-highlight-color可以取消点击高亮。
  • localStorage在浏览器开启无痕模式下ios会抛异常,导致js中断。
  • 一些情况下对非可点击元素监听click事件,ios下不会触发,css增加cursor:pointer就搞定了。当然想要干脆静止点击就是not-allowed。
  • android4.4以下版本,设置圆角属性需要在直接元素上,向父元素设置圆角并且指定overflow:hidden是不会生效的。
  • http://www.zhihu.com/question/31337935/answer/52025806?utm_source=weibo&utm_medium=weibo_share&utm_content=share_answer&utm_campaign=share_button 这个就是解决1px的问题
  • 如果你用absolute元素绑定scroll事件去模拟fixed,每触发一次scroll就会发生一次计算,快速随意滚动的时候,如果浏览器没优化的话,就会感受到明显的卡顿,firefox有个平滑滚动的选项,开启后会流畅的多。如果你在滚动的时候加上阈值判断,又会出现反应慢甚至乱跑的现象
  • 页面弹出层包含input,在触发键盘后,android如果页面有滚动条那么会滚动一个键盘高度的位置,键盘消失后不会回到原位置,想想如果反复触发键盘那就反复滚动网页,不要觉得是小事,测试不会这样认为的。
  • 微信的坑了。在使用Backbone做的单页面应用中,history后退操作,页面不会回滚到历史记录的scrolltop位置。chrome和其它浏览器测试正常,只有微信不会回到原来位置,这是相当影响体验的,最后只能自己在路由里记录上一个view的滚动条位置和做相应判断和操作。
  • 最后说一句微信也是流氓,会劫持网页的video标签,播放完视频的窗口上还给你推送一些下三俗的视频。
  • 来, 跟我念 : 千万不要用 jQuery Mobile ! 千万不要用 jQuery Mobile ! 千万不要用 jQuery Mobile !
  • 点击穿透 click延迟 scroll元素临界的bug android screen.w/h 不准 rem不准 scroll时动画失效 animate回调 最小字号限制 不同机型全屏自适应 android,ios和native通讯 下载app方案ios,android,微信都不一样 二维码识别 太多了手机根本写不完吃饭去了…补个canvas残影 drawimage 发虚等不同系统机型也表现不一致。
  • Android调用重力传感器返回的数据和iOS和Windows Phone上的是相反的……
  • 微信 Android 版在 HTML 代码里写 meta width=device-width 正常,JS 动态添加 meta 就要手动获取 320、640 这样的具体数值写进去才正常~
  • 图片大小最好是标注的2倍,这样可以保证在各类机型上的清晰
  • rem方案相当复杂,存在非常多的兼容问题,以至于阿里这边还专门有一个Flexible库来解决这一系列问题。但是兼容性问题解决后开发会变得非常畅快。
  • 图片比较多的页面务必要做懒加载(也就是滚动到图片的时候才加载)
  • border-radius不要随便乱用,在很多安卓机型上都会出现锯齿,非常丑
  • css动画请使用transform,而非直接控制width,height,margin,否则会造成大量的计算,性能堪忧。transfrom会把元素独立出来单独计算的。
  • 如果动画比较多或者面积比较大,想提高性能的话可以用transform3D,就算不设置3d变换也会促使浏览器开启硬件加速
  • flex布局挺好,但有点兼容性问题,需要同时写好几个带前缀的私有属性才能保证大多数机型的适配。推荐使用autoprefixer,不过要记得自己定制兼容浏览器列表,不然会有很多-ms-,-o-这类的属性,在移动端是没有用的
  • iOS 弹出键盘时,viewport 高度并不会变,但是 Android 是变的。所以 iOS 上 fixed 在底部的元素显示不出来。
  • 做点击跳转,长按删除功能的时候坑比较多:
    (1)组合使用touchstart,touchmove,touchend,click事件;
    (2)部分机型按到文字会弹出选择,复制的选项,使用 onselectstart="return false;" 禁掉;
    -- 之后才知道有很多移动端事件处理库可以用,如 Hammer.JS - Hammer.js
  • 1px边框问题,可以延伸到很多知识,如物理像素,CSS像素,viewport, rem等等
    再谈mobile web retina 下 1px 边框解决方案
    移动前端开发之viewport的深入理解
    从网易与淘宝的font-size思考前端设计稿与工作流
  • Hybird开发模式下,页面跳转及返回,因为涉及到H5页面之间,H5与原生页面,需要判定从H5还是从原生跳过来,返回键的处理不同。
    还有就是用户进入深层级的页面然后返回,有时候需要特殊处理。
    目前还没有很好的解决方案,暂且采用url传参的形式进行区分,做相应的处理;
  • 相对于底部绝对定位的按钮被键盘顶起来,用js定高
this.clientHeight = document.documentElement.clientHeight;
$('body').height(this.clientHeight);

  • 一定要考虑文字过长的情况,要么溢出隐藏,要么换行不会影响布局。多使用一栏固定,另一栏(或多栏)自适应
  • IOS下和安卓对json对象的遍历顺序相反
  • 千万别在页面底部放一个position为fixed的输入框,iOS里会提不上来…
  • iScroll 5 官方示例 拖到本地开发环境就完全动不了,无论 Chrome 移动设备模拟器 还是 微信内置浏览器 —— 弃之不用,手写下拉刷新……
  • ECharts 的雷达图在 iOS WebView 中拖拽 容易使整个 ViewPort 高宽突破 meta 标签的限制
  • Animate.css 中动作幅度较大的动画在用 腾讯 X5 内核的 App 中卡顿明显(鹅厂号称的基于 Chrome 完整内核优化 哪儿去了?MIUI 原生浏览器 都超流畅)
  • WebKit 533-(微信、UC v9.8 开发者版)在遍历 带伪元素规则的 CSSStyleRule 对象时,会直接让浏览器崩溃(下断点走单步时基本没事,一释放断点立马崩溃,所以怀疑是栈溢出)—— 检测到老内核 直接跳过那段代码……(对老浏览器砍功能)
  • a 标签 href 仅指向一个不存在的 hash,点击回调中根据 hash 内容调用相应功能,并阻止默认行为 —— Android、iOS 上各种 WebKit 浏览器 都会清空历史记录(执行了 a 标签的默认行为),导致单页应用无法回退……(桌面端浏览器 均无此问题)
  • 微信 iOS 版 整页切换到 动态生成的表单,其提交按钮会自动点击,导致空白表单提交 —— 自己给 iOS WebKit 补上砍掉的 HTML 5 表单元素验证方法,提交前先验证 HTML 代码中的 required、pattern 属性,否则阻止提交事件
  • 刚好碰到一个,fixed页脚定位,点击输入框弹出输入法,这时候下滑动会把页脚拉上来
  • 刚碰到一个,iOS8 的 webview 加载网页,不支持使用 createElement 创建 video 元素播放 hls 视频流,然后动态指定 parent,会导致 app 崩溃。并且,webview 视频内嵌播放模式下点击全屏按钮会导致 app 崩溃。以上问题原因不明,经验证 iOS8 必现。

未完待续......

学习网站:http://www.vuexx.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,548评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,497评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,990评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,618评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,618评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,246评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,819评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,725评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,268评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,356评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,488评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,181评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,862评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,331评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,445评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,897评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,500评论 2 359

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,280评论 25 707
  • 前几天一个朋友问我要不要也写写有关于时光机的策划文,她可以给我开小小的后门,我第一时间想到的是有关于外公的事,但外...
    LD是胆小鬼阅读 350评论 2 1
  • 张嘉译老师霸屏主力之一的《我的体育老师》,意外的火了一个小女孩——赵今麦饰演的马莉。这部剧讲的是40多岁的体育老师...
    向上的植物阅读 990评论 1 5
  • 著名美学家、文学家朱光潜说过,据他的教书经验来说,一般青年都欢喜听故事而不喜欢读诗。就出版界的消息看,诗一种滞销货...
    萃彦相逢何必曾相识0102阅读 447评论 2 3
  • 洛洛情深齐,潇潇凄雨寂。 君若为此故,还顾满泪滴。 闻时醉梦思,见时浮面容。 此情待何期,敢问知我心。
    灯火阑珊心里话阅读 188评论 0 5