webview相关知识点搜集
-webkit-box-shadow和text-shadow在Android 2.3 webview上,模糊半径(blur)值不能为0px或省略。
这个问题倒是不大,box-shadow本身是较耗性能的,而跑2.3的Android设备又大都比较低端,所以在一些非必要的场景下,本属性不生效也未尝不是一种选择。在一些必要的地方,保证blur值不为0px即可,比如设为1px,与0px效果差异不大,大多数情况下都可以接受。另一方面,4.0之后已经支持不带-webkit-私有前缀的box-shadow了,所以为了把这种妥协带来的影响降到最低,可以在这条声明后面再写一条不带私有前缀的声明,blur值可为0px或省略,2.3只支持带有私有前缀的box-shadow,它不会被影响。
border-radius 在Android 2.3 webview上,值不能为百分比形式。
Android 2.x webview不支持canvas的toDataURL()方法。
这也意味着我在《使用localStorage选择性缓存图片》一文中提到的方法,不能正常工作于Android低版本内置浏览器。
Android 2.3及以下 webview不支持svg。
-webkit-background-size 在Android 2.3及以下 webview 中不能只写一个值。
Android 4.4之前的webview中,::after及::before伪对象不支持transition 。
android 4.4+移除了webview的文件上传功能。
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0" name="viewport" />
<meta content="yes" name="apple-mobile-web-app-capable" />
<meta content="black" name="apple-mobile-web-app-status-bar-style" />
<meta content="telephone=no" name="format-detection" />
<meta content="email=no" name="format-detection" />
- 第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;尤其要注意的是content里多个属性的设置一定要用分号+空格来隔开,如果不规范将不会起作用;
- 第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
- 第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
- 第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码;
- 第五个meta标签表示:去除Android平台中对邮箱地址的识别。
可以使用 Weinre 调试。
使用touch事件时,android和ios对touchend的响应处理方式不一致,比如在a元素上使用touchend触发一个弹出层显示,在android上面的浏览器手指在a元素上做滑动操作,然后手指离开,结果不会触发 touchend事件,同样的操作在ios上会触发touchend。
ios6修复了css position:fixed 1像素抖动的bug,不过引出另一个bug:当给指定元素添加 position:fixed时首次加载页面完成后,滑动整个网页,添加此样式的元素会跟随页面滚动(目的是固定此元素)。
为其元素添加如下css属性即可:-webkit-transform:translate3d(0,0,0)(具体原因不知)。
IOS -webkit-touch-callout,长按诸如链接的目标对象时,是否允许呼出默认的popOver,当前选择值包括:none:不呼出弹窗框 ;inherit:可以呼出弹窗框。
IOS -webkit-user-select,是否允许用户选择元素的内容,选择值包括:auto:用户可以选择元素内的内容 ;none:用户不能选择任何内容;text:用户只能选择元素内的文本。