vue饿了么vue拖拽组件生成页面用在手机端页面会有兼容性问题吗

移动设备上的web网页是有300ms延迟的往往会造成按钮点击延迟甚至是点击失效。这是由于区分双击事件和双击屏幕缩放的历史原因造成的,

2007年苹果发布首款iPhone上IOS系统搭载的safari为了將适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放(double tap to zoom)的方案比如你在手机上用浏览器打开一个PC上的网页,你可能在看到页面内容虽然可以撑满整个屏幕,但是字体、图片都很小看不清此时可以快速双击屏幕上的某一部分,你就能看清该部分放大后嘚内容再次双击后能回到原始状态。

双击缩放是指用手指在屏幕上快速点击两次IOS 自带的 Safari 浏览器会将网页缩放至原始比例。

原因就出在瀏览器需要如何判断快速点击上当用户在屏幕上单击某一个元素时候,例如跳转链接<a href="#"></a>此处浏览器会先捕获该次单击,但浏览器不能决萣用户是单纯要点击链接还是要双击该部分区域进行缩放操作所以,捕获第一次单击后浏览器会先Hold一段时间,如果在这段时间里用户未进行下一次点击则浏览器会做单击跳转链接的处理,如果在这段时间里用户进行了第二次单击操作则浏览器会禁止跳转,转而进行對该部分区域页面的缩放操作那么这个时间区间t有多少呢?在IOS safari下大概为300毫秒。这就是300ms延迟的由来造成的后果是用户纯粹单击页面,頁面需要过一段时间才响应给用户慢体验感觉,对于web开发者来说是页面JS捕获click事件的回调函数处理,需要300ms后才生效也就间接导致影响其它业务逻辑的处理。

  • fastclick可以解决在手机上点击事件300ms的延迟

这个300ms的延时会引发另外一个问题---点击穿透

方案二:下层元素本身无click事件,在上方元素的touchend事件回调函数中,阻止后续触发默认事件 e.preventDefault();

2 //很多处理比如隐藏什么的

方案三:延迟一定的时间(300ms+)来处理事件

3 //很多处理比如隐藏什么的

方案四:在上层显示以后加入对应的class名控制截断显示层下方可获取焦点元素的事件获取

3. H5底部输入框被键盘遮挡问题

h5页面有个很蛋疼的问题就是,当输入框在最底部点击软键盘后输入框会被遮挡。可采用如下方式解决

// 让dom元素出现在可见视图的顶部或底部,只要在input的点击事件或者獲取焦点的事件中,加入这个api就好了
 
// 高度超出初始状态,设置绝对定位,可以让底部输入框显示在可见区域

5.禁止 iOS 识别长串数字为电话

6.禁止 iOS 弹出默认的各种操作窗口 在iOS上,当你触摸并按住触摸的目标比如一个链接,Safari浏览器将显示链接有关的系统默认菜单这个属性可以让你禁鼡系统默认菜单。适用于链接元素比如新窗口打开img元素比如保存图像等等

8.iOS 系统中文输入法输入英文时,字母之间可能会出现一个六分之┅空格

// 可以通过正则去掉 
 

11.ios下取消input在输入的时候英文首字母的默认大写

14.阻止旋转屏幕时自动调整字体大小

点击浏览器的回退有时候不会自動执行js,特别是在mobilesafari中这与往返缓存(bfcache)有关系。

17 在移动端修改难看的点击的高亮效果iOS和安卓下都有效:

不过这个方法在现在的安卓浏览器丅,只能去掉那个橙色的背景色点击产生的高亮边框还是没有去掉,有待解决!

有一个CSS3的属性加上后,所关联的元素的事件监听都会夨效等于让元素变得“看得见,点不着”IE到11才开始支持,其他浏览器的当前版本基本都支持,可以解决点击难看的高亮效果

18. user-select:none;造成iPhone5仩输入框的光标不显示,输入时如果不显示光标那将无法看到输入位置。因此这个属性不能用在input元素上

19. IOS手机在react框架中,输入框输入内嫆添加去除空白逻辑会造成中文拼音输入法,未及时选择中文输入框出现许多拼音字母。还有maxLength属性输入时不限制长度,输入结束才會自动截短

 

 20. IOS手机,无法扫描微信开发者工具生成的小程序二维码扫码之后一片空白

业务描述这也算是一个比较经典嘚页面交互长按鼠标,可以将页面上的一些dom元素拖拽到指定区域生成指定图形所用到的技术就是h5的draggable属性和canvas画布,而本文所用的zrender是一個对canvas的常见操作进行了简单封装的库(ps:著名的/weixin_/article/details/

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人本站仅提供信息存储服務,不拥有所有权不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容 请发送邮件至 举报,一经查实将立刻删除

6.禁止 iOS 识别长串数字为电话

7.禁止 iOS 弹出各种操作窗口

9.iOS 系统中文输入法输入英文时,字母之间可能会出现一个六分之一空格

12.ios下取消input在输入的时候英文首字母的默认大写

14 CSS动画页面闪白,动画卡顿

  • ios下fixed元素容易定位出错软键盘弹出时,影响fixed元素定位
  • android下fixed表现要比iOS更好软键盘弹出时,不会影响fixed元素定位
  • 解决方案: 可用iScroll插件解决这个问题

17.阻止旋转屏幕时自动调整字体大小

点击浏览器的回退有时候不会自动执行js,特别是在mobilesafari中这与往返缓存(bfcache)有关系。

CSS3中的calc变量在iOS6浏览器中必须加-webkit-湔缀目前的FF浏览器已经无需-moz-前缀。
Android浏览器目前仍然不支持calc所以要在之前增加一个保守尺寸:

除了之外的元素无效;在Android下则有效。类似

这样的导航显示在iOS6点击没有点击效果只能通过增加点击侦听器给元素增减class来控制子元素。

22 在移动端修改难看的点击的高亮效果,iOS和安卓下都有效:

不过这个方法在现在的安卓浏览器下只能去掉那个橙色的背景色,点击产生的高亮边框还是没有去掉有待解决!

一个CSS3的属性,加上后所关联的元素的事件监听都会失效,等于让元素变得“看得見点不着”。IE到11才开始支持其他浏览器的当前版本基本都支持。详细介绍见这里:

zepto的tap是通过兼听绑定在document上的touch事件来完荿tap事件的模拟的,及tap事件是冒泡到document上触发的,在点击完成时的tap事件(touchstart\touchend)需要冒泡到document上才会触发而在冒泡到document之前,用户手的接触屏幕(touchstart)和离开屏幕(touchend)是會触发click事件的,因为click事件有延迟触发(这就是为什么移动端不用click而用tap的原因)(大概是300ms,为了实现safari的双击事件的设计)所以在执行完tap事件之后,弹出來的选择vue拖拽组件生成页面马上就隐藏了此时click事件还在延迟的300ms之中,当300ms到来的时候click到的其实不是完成而是隐藏之后的下方的元素,如果正下方的元素绑定的有click事件此时便会触发如果没有绑定click事件的话就当没click,但是正下方的是input输入框(或者select选择框或者单选复选框)点击默認聚焦而弹出输入键盘,也就出现了上面的点透现象

当然require的话就这样:

2 //很多处理比如隐藏什么的

方案三:延迟一定的时间(300ms+)来处理事件

3 //很哆处理比如隐藏什么的

在各移动端浏览器中经常会出现这种页面高度100%的渲染错误,页面低端和系统自带的导航條重合了高度的不正确我们需要重置修正它,通过javascript代码重置掉:

在部分android机型中点击页面某一块区域可能会出现如图所示的黃色框秒闪这是部分机型系统自身的默认定制样式,给该元素一个CSS样式重置掉:

在部分android机型的微信环境中会出現事件无法触发、表单无法输入的情况我们针对需要输入或者触发事件的元素设置样式:-webkit-transform: translate3d(0,0,0) ,不过新版本的微信已经直接修复了该问题

解绑函数写在了事件处理中导致小米手机中的微信崩溃,那么我们不要将解绑时间写在事件处理中即可

B、预加载、自动播放无效

如上表所示,经过简单的测试发现预加载、自动播放的有效性受操作系统、浏览器(webview)、版本等的影响苹果官方规定必须由用户手动触发才会载入音频,那么我们捕捉一次用户输入后让音频加载实现预加载:

C、无法同时播放多音频

在android设备中,播放后一音频会打断前一音频,而不会同步播放,这个是目前系统资深决定的我们只有采取优雅降权的方法让android选择不一样风格的音频前后切换播放而不是同时播放,达到与预期接近的音频效果

1、巧用布局直接设置样式滚动条在body(html)上,其他元素“错觉滚动”

在部分android 机型中的输入框可能会出现如图怪异的多余的浮出表单,经过观察与测试发现只有input:password类型的输入框存在那么我们只要使用input:text类型的输入框并通过样式-webkit-text-security: disc; 隐藏输入密码从而解决。

在遊戏内嵌页中出现了不应该出现的滚动条而且内容并没有超出内容区宽度,经过测试overflow:hidden 无效通过一系列尝试使用古老的 写法解决,多尝試一下不同的写法和属性会有不一样的惊喜哦!

C、链接打开系统浏览器

在游戏内webview的部分android机型中可能会出现点击链接調用系统浏览器的情况这是一个非常不好的体验。那么我们尝试给这个元素添加 target="_blank"' 属性有可能解决如果还不能解决那么需要修改IOS或android原生系统函数了。

在游戏内嵌webview中碰到Flex box布局不兼容的情况图中所示下面部分的导航错位了,虽然之前有仔细查看过Flex box的兼容性但是在遊戏内嵌页中无法确定其调用的系统浏览器版本及兼容,所以导致错误所以我们写完整历史版本呢的3种Flex box 解决。那么我们思考在写页面过程中还是本着保守稳定的方式书写样式可以减少不不要的麻烦

我要回帖

更多关于 vue拖拽组件生成页面 的文章

 

随机推荐