uni-app ios 旁白h5 使用 uni-popup、picker等弹出弹出层 点击弹出层空白处 会点击到弹窗层阴影下方的文本内容
uni-app ios 旁白h5 使用 uni-popup、picker等弹出弹出层 点击弹出层空白处 会点击到弹窗层阴影下方的文本内容
项目信息 | 详细信息 |
---|---|
产品分类 | uniapp/H5 |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | 3.0.0-3081220230817001 |
浏览器平台 | 手机系统浏览器 |
浏览器版本 | safari 和微信内置浏览器都存在这个问题 |
项目创建方式 | CLI |
CLI版本号 | 3.0.0-3081220230817001 |
操作步骤:
- 苹果手机-设置-辅助功能-打开旁白
- 页面中使用uni-popup组件、picker等弹出
- 点击阴影处朗读阴影下方内容
预期结果:
- 苹果手机-设置-辅助功能-打开旁白
- 页面中使用uni-popup组件、picker等弹出
- 点击阴影处不需要朗读阴影下方内容
实际结果:
点击阴影处朗读阴影下方内容
bug描述:
uniapp ios 旁白h5,使用 uni-popup弹出层,点击弹出层空白处,会点击到弹窗层阴影下方的文本内容
更多关于uni-app ios 旁白h5 使用 uni-popup、picker等弹出弹出层 点击弹出层空白处 会点击到弹窗层阴影下方的文本内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
附件
更多关于uni-app ios 旁白h5 使用 uni-popup、picker等弹出弹出层 点击弹出层空白处 会点击到弹窗层阴影下方的文本内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的iOS旁白模式下H5弹出层穿透问题。解决方案如下:
- 针对uni-popup组件,需要在弹出层显示时给遮罩层添加
aria-hidden="true"
属性,防止旁白读取底层内容:
<view class="uni-popup__mask"
aria-hidden="true"
@click="close">
</view>
- 对于picker等原生组件,可以通过动态设置底层元素的
aria-hidden
属性:
// 显示弹出层时
document.getElementById('content').setAttribute('aria-hidden', 'true');
// 隐藏弹出层时
document.getElementById('content').removeAttribute('aria-hidden');
- 或者使用CSS禁止底层元素的可访问性:
.popup-show ~ * {
-webkit-user-select: none;
pointer-events: none;
aria-hidden: true;
}
- 也可以尝试在弹出层显示时给body添加
inert
属性(需要polyfill支持):
document.body.setAttribute('inert', '');