H5调用SDK相关问题及解决方案H5调试相关方案与策略

H5调用SDK相关问题及解决方案

H5调试相关方案和策略

移动H5相关基础技术概述

原则与实践

前两篇文章详细讨论了1px问题和响应式布局问题,并给出了原理和解决方案。

为防止丢失,点赞收藏后跳转到快捷频道:**1px**[1]频道和响应式布局[2]频道

接下来,我们来看看其他问题的原理和解决方法。

以下解决方案均经本人测试成功,健康安全。请把它们放下来吃。由于篇幅原因,一些非核心方案的实现细节暂未讨论,需要自己研究。

iOS 滑动不流畅

表现

上下滑动页面会导致卡顿,手指离开页面,页面立即停止移动。整体表现是滑动不顺畅,没有滑动惯性。

原因

为什么在 iOS 中滑动不流畅,它是如何定义的?

最终我在文档中找到了答案(文档链接在参考资料部分)。

图片[1]-H5调用SDK相关问题及解决方案H5调试相关方案与策略-4747i站长资讯

原来在iOS 5.0 及以后的版本中,为滑动定义了两个值,默认值为 .

解决方案

1.在滚动容器上添加滚动触摸方法

将值设置为

设置滚动条隐藏:

可能会导致定位固定的元素随页面滚动

2.设置

将外部设置为 ,将内容元素设置为 。如果内部元素超出主体,则发生滚动,超出主体的部分被隐藏。

两者结合效果更佳!

iOS上拉边框下拉出现白色空白

表现

用手指按住屏幕往下拉,屏幕顶部会出现一个白色区域。将手指按住屏幕并向上拉,底部会有一个额外的白色区域。

原因

在 iOS 中,在屏幕上上下拖动手指会触发一个事件。这个事件触发的对象是整个容器,容器自然会被拖拽,其余的都是空白。

解决方案

1. 监听事件禁止滑动

共有三个移动触摸事件,定义为

显然我们需要控制的是事件,所以我在W3C文档中找到了这段话

请注意,用户代理发送的速率是 – ,并且可能 on 和 other 。

如果 是在一个接触点的第一个事件上,它就可以通过任何具有相同接触点的事件,例如 。

事件的速度由实现定义,取决于硬件功能和其他实现细节

防止在同一接触点上的所有默认行为(例如滚动)的方法。

由此,我们找到了解决方案,通过监控,让需要滑动的地方滑动,不需要滑动的地方禁止滑动。

值得注意的是,我们要过滤掉具有滚动容器的元素。

实现如下:

2. 滚动折衷填补空白,装饰其他功能

在很多情况下,我们无法解决这个问题h5页面不能上下滑动,改变我们的思维方式。根据场景,我们可以使用下拉菜单作为功能操作。

例如:下拉后刷新页面

图片[2]-H5调用SDK相关问题及解决方案H5调试相关方案与策略-4747i站长资讯

页面放大或缩小不确定行为

表现

双击或捏合页面元素,页面将放大或缩小。

原因

HTML 本身会产生放大或缩小行为。例如,在 PC 浏览器上,您可以自由控制页面的放大或缩小。但是在移动设备上,我们不需要这种行为。因此,我们需要禁止这种不确定的行为,以改善用户体验。

原则和解决方案

HTML元标记标准中有一个属性,用来控制页面的缩放,一般用在移动端。如下图MDN所示

图片[3]-H5调用SDK相关问题及解决方案H5调试相关方案与策略-4747i站长资讯

移动端常规书写

所以我们可以设置,并使用来避免这个问题

点击点击事件延迟和穿透

表现

侦听元素事件,然后单击元素以触发大约 10 秒的延迟。

点击遮罩层,遮罩层消失后,底层元素点击触发。

原因

为什么会有点击延迟?

在iOS中,为了实现双击缩放操作,在点击300ms后,如果没有进行第二次点击,则进行点击操作。也就是说,判断用户行为是否是由双击引起的。但是,在应用程序中,无论是否需要双击缩放行为,单击都有 300 毫秒的延迟。

为什么点击点击通过?

当两层元素叠加时,事件绑定到上层元素,事件绑定到下层元素。由于发生在后面,当点击上层元素时,该元素消失,下层元素会触发一个事件,从而产生点击穿透的效果。

原则和解决方案

解决方案一:将click替换为

如前所述,移动设备不仅支持点击,还支持多个触摸事件。所以我们现在的基本思路是用事件来代替事件。

替换它不仅解决了延迟事件的问题,还解决了穿透问题。因为混合时会产生穿透问题。

在本地使用

在 vue 中使用

在开源解决方案中,还提供了事件。比如vant中的组件

那么,是否可以用所有事件替换事件?为什么开源框架仍然会给出事件?

让我们想象一个需要同时点击和滑动的情况。如果换成 怎么办?

事件触发顺序: , , , .

不难想象,当我需要滑动时,最先触发的点击事件发生了冲突?

因此,在滚动的情况下,建议使用处理。

下面的处理也在下一个开源库中进行。对于和,截取了部分源代码。

主要目的是确保在使用合成事件时,它不在滚动的父元素下。

解决方案二:使用库

安装后使用

同样,使用库后,延迟和穿透问题都没有了

根据我的实践,只要涉及到一个开源库,那么我们就必须了解它的实现原理。主要是把已有的原生事件集合封装成更兼容的事件集合。

源码 [3] 核心代码不长h5页面不能上下滑动,不到1000行。有兴趣了解一下!

软键盘将页面向上推,但不向后推

表现

在手机上,当点击框时,键盘弹起,页面上推,导致页面样式混乱。

移开焦点时,键盘缩回,键盘区域为空白,不回退。

原因

我们将在应用程序布局中有一个固定的底部。在某些版本的中,输入弹窗会解压并定位元素。导致可见区域变小,布局混乱。

原则和解决方案

软键盘上推页面的解决方案主要是通过监听页面的高度变化,强制恢复到弹出前的高度。

兼容原则,1.判断版本类型2.改变滚动的可见区域

,恢复到原始视口

X系列安全区适配问题

表现

头部刘海的侧面或底部,有刘海遮挡文字,或黑底或白底的空白区域。

原因

X及其以上系列均采用刘海屏设计和全面屏手势。头部、底部和侧面都需要特殊处理。以适应 X 的特殊情况。

解决方案

设置安全区域,填写危险区域,不要在危险区域进行操作和内容展示。

危险区域是指头部的不规则区域,底部的单杠区域,左右触发区域。

图片[4]-H5调用SDK相关问题及解决方案H5调试相关方案与策略-4747i站长资讯

具体操作如下: 设置标签为,获取所有区域填充。判断设备是否属于X,在底部添加适配层

有3个值:

:该值不影响初始布局视口,整个网页都是可见的。

:视口被缩放以适合内联显示的最大矩形。

:视口被缩放以填充设备显示。强烈建议使用变量,以确保重要内容不会出现在显示之外。

设置-适合

添加适配层

使用变量

, , , 由四个环境变量组成,它们定义了视口边缘内的矩形, , 和 , 以便可以安全地放入内容而不会被非矩形显示器截断。对于矩形视口,例如普通的笔记本电脑显示器,该值等于 0。对于非矩形的显示器(例如圆形表盘、屏幕),在由用户代理设置的四个值形成的矩形内,一切都是可见的。

用法是,第一个参数是自定义区域,第二个是替代值。

用法是该函数是在不生效时给一个替代值。

它是在2017-2018年起草的,是否已经标准化尚不清楚。其他iOS浏览器版本是否存在此功能未知,作为兼容进程添加。

有关详细信息,请参阅文章末尾的参考资料。

兼容性

页面生成为图片和二维码问题

表现

在工作中,需要为页面生成图片或二维码。可能我们第一时间想到的,交给后端去生成比较容易。但是这样一来,我们需要把所有的页面代码都传给后端,这样会消耗太多的网络性能。

解决方案

生成二维码

使用生成二维码

只需将其分配给图像

生成图像

主要使用生成的画布

但它并不止于此,因为是的。移动端生成的图片比较模糊。

我们使用一种新的方法生成多次,并放入一个双容器中,以达到更清晰的效果。通过超链接下载图片和下载文件很简单,后面会更新更完整的实现。

根据需要设置大小

文章来源:https://new.qq.com/omn/20211215/20211215A04OYY00.html

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享