1.format-detection[telephone=no] 是否自动把电话号码转为链接
1
|
< meta name = "format-detection" content = "telephone=no" >
|
1
|
|
IOS针对HTML文档内的纯文字,会自动转换为电话号码链接,当点击时,会默认和系统的拨号相关联,但是开发者有时候并不想这样。
这时只要在head加上上面这段meta,就不会了。
2. viewport 控制应用屏幕属性
1
|
< meta name = "viewport" content = "width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
|
1
|
|
viewport是一个针对移动web的meta标签,它的主要属性如下:
width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。
height:和 width 相对应,指定高度。
initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。
maximum-scale:允许用户缩放到的最大比例。
minimum-scale:允许用户缩放到的最小比例。
user-scalable:用户是否可以手动缩放
为什么我们要设置width和height©因为移动终端的分辨率比常用的显示器要小,假如我们把一般的网站在safari打开,会发现整体布局和文字都缩小的显示在手机屏幕上,只有我们把浏览器宽度设置成和我们手机分辨率宽度一样,才是1:1的对应显示。所以一般我们开发web app,width=device-width 把宽度设置成和设备宽度一样。
至于 initial-scale、maximum-scale、minimum-scale 就是在出现了页面内容和设备分辨率不是1:1 对应的时候用的,我们都知道用户可以使用双指操作将safari页面放大或者缩小,user-scalable可以控制用户是否可以这么做。假如我们设置了 width=device-width,一般我们不再需要给用户缩放。特别针对混合型的web app,我们体验尽量向原生APP靠拢,不允许缩放是大部分应用的做法。
这里有个经验分享,之前我在使用jquery mobile 1.0.2 版本的时候,发现jqm初始化的时候会用javascript把user-scalable设置成true,所以那时候即使我加了meta标签,也没有作用,后来才发现是jqm搞的鬼。后来1.1.0版本没有这个问题,假如你设置了这个meta标签的属性发现不生效,可以检查一下是不是一些第3方框架对这些属性做了设置。
3.webkitTouchCallout 禁止原生弹出菜单
在IOS浏览器里面,假如用户长按a标签,都会出现默认的弹出菜单事件,例如:
CSS3 的webkitTouchCallout 属性可以控制这个原生行为是否被执行,只要加上这段CSS
1
|
body { -webkit-touch-callout: none ; }
|
1
|
document.documentElement.style.webkitTouchCallout = 'none' ;
|
4.webkitUserSelect 禁止用户选中
如果用户长按web网页的文本内容,都会出现选中的行为,提供复制文字等功能。
CSS的方法
1
|
body { -webkit-user-select: none ; }
|
1
|
document.documentElement.style.webkitUserSelect = 'none' ;
UIKit提供UIWebView组件,允许开发者在App中嵌入Web页面。通过UIWebView组件,我们可以在应用中很方便的嵌入HTML页面。在利用IOS原生的组件进行界面开发时,界面UI元素的布局需要我们去一点点的计算,尤其是对于复杂点的图文混排的内容来说,这种计算有时很让人头痛。与原生组件相比,HTML本身的结构性语义性较强,利用CSS能更加方便快捷的进行内容布局和美化,同时Javascript可以为页面添加所需的交互动作和处理逻辑。因此利用HTML/CSS/Javascript在界面上添加那些低交互性纯展示性的内容有时是比较好的选择,虽然这可能增加了学习的成本,但现在基本上每个开发人员都或多或少的学习和使用过这些前台技术,更何况对于那些从传统前端开发转至移动端开发的人员,这些学习成本基本可以忽略不计。
实现UIWebviewDelegate协议,在webViewDidFinishLoad:方法中添加以下代码
一点补充 UIWebview类中有有一个名为scalesPageToFit的BOOL属性,该属性指定当web页面与UIWebView的大小不一致时,是否缩放web页面来使用 UIWebView 组件的大小。默认值为NO,即忽略web页面与webview组件的大小关系,以页面的原始大小进行显示,不执行任何缩放。有时为了保证内容出现滚动条,要确保HTML页面的大小与webview组件的大小的一致性,同时设置webview.scrollView.scrollEnabled = NO . 通过以上的几点,对于加载展示简单的HTML页面,基本上我们可以达到"以假乱真"的效果了。 StackOverflow相关讨论: Disabling user selection in UIWebView Apple Webkit 手册:CSS |