移动平台前端开发要点

移动平台前端开发是指针对高端智能手机(如Iphone、Android)作站点适配也就是WebApp,并不是是针对普通手机开发Wap 2.0,因此在阅读本篇文章之前,你须要对webkit内核的浏览器有必定的了解,须要对HTML5和CSS3有必定的了解。

一、首先咱们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到很是重要的做用

       (1)<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
       (2)<meta content="yes" name="apple-mobile-web-app-capable" />
       (3)<meta content="black" name="apple-mobile-web-app-status-bar-style" />
       (4)<meta content="telephone=no" name="format-detection" />
        第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,而且文档最大的宽度比例是1.0,且不容许用户点击屏幕放大浏览;尤为要注意的是content里多个属性的设置必定要用逗号+空格来隔开,若是不规范将不会起做用。
        第二个meta标签是iphone设备中的safari私有meta标签,它表示:容许全屏模式浏览;
        第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
        第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码

二、如何去除Android平台中对邮箱地址的识别
看过iOS webapp API的同窗都知道iOS提供了一个meta标签:用于禁用iOS对页面中电话号码的自动识别。在iOS中是不自动识别邮件地址的,但在Android平台,它会自动检测邮件地址,当用户touch到这个邮件地址时,Android会弹出一个框提示用户发送邮件,若是你不想Android自动识别页面中的邮件地址,你不妨加上这样一句meta标签在head中

        <meta content="email=no" name="format-detection" />

三、如何去除iOS和Android中的输入URL的控件条
你的老板或者PD或者交互设计师可能会要求你:可否让咱们的webapp更加像nativeapp,我不想让用户看见那个输入url的控件条?
答案是能够作到的。咱们能够利用一句简单的javascript代码来实现这个效果
          setTimeout(scrollTo,0,0,0);

请注意,这句代码必须放在window.onload里才可以正常的工做,并且你的当前文档的内容高度必须是高于窗口的高度时,这句代码才能有效的执行。

四、如何禁止用户旋转设备
我曾经也想禁止用户旋转设备,也想实现像某些客户端那样:只能在肖像模式或景观模式下才能正常运行。但如今我能够很负责任的告诉你:别想了!在移动版的webkit中作不到!
至少Apple webapp API已经说到了:咱们为了让用户在safari中正常的浏览网页,咱们必须保证用户的设备处于任何一个方位时,safari都可以正常的显示网页内容(也就是自适应),因此咱们禁止开发者阻止浏览器的orientationchange事件,看来苹果公司的出发点是正确的,苹果确实不是通常的苹果。
iOS已经禁止开发者阻止orientationchange事件,那Android呢?对不起,我没有找到任何资料说Android禁止开发者阻止浏览器orientationchange事件,可是在Android平台,确实也是阻止不了的。

五、如何检测用户是经过主屏启动你的webapp
看过Apple webapp API的同窗都知道iOS为safari提供了一个将当前页面添加主屏的功能,按下iphone\ipod\ipod touch底部工具中的小加号,或者ipad顶部左侧的小加号,就能够将当前的页面添加到设备的主屏,在设备的主屏会自动增长一个当前页面的启动图标,点击该启动图标就能够快速、便捷的启动你的webapp。从主屏启动的webapp和浏览器访问你的webapp最大的区别是它清除了浏览器上方和下方的工具条,这样你的webapp就更加像是nativeapp了,还有一个区别是window对像中的navigator子对象的一个standalone属性。iOS中浏览器直接访问站点时,navigator.standalone为false,从主屏启动webapp时,navigator.standalone为true, 咱们能够经过navigator.standalone这个属性获知用户当前是不是从主屏访问咱们的webapp的。
在Android中历来没有添加到主屏这回事!

六、如何关闭iOS中键盘自动大写
咱们知道在iOS中,当虚拟键盘弹出时,默认状况下键盘是开启首字母大写的功能的,根据某些业务场景,可能咱们须要关闭这个功能,移动版本webkit为input元素提供了autocapitalize属性,经过指定autocapitalize=”off”来关闭键盘默认首字母大写。javascript