在 IOS 上启用语音时,移动菜单无法打开

2024-01-04

我正在使用 Safari 浏览器在 ios 中打开我的网站。移动菜单工作正常。

当我点击菜单图标(三行图标)时它会打开。但是,当我启用语音然后进入浏览器并点击该菜单图标时,移动菜单未打开。

这是CSS问题还是我必须添加一些aria属性?

有人能帮我吗?

   

jQuery('.menu-trigge').once('menuMobile').click(function () {
                    jQuery(this).toggleClass('expand');
                    if (jQuery('.menu-trigger').hasClass('expand')) {
                      jQuery('.menu-trigger').first().slideDown();
                    } else {
                      jQuery('.menu-trigger').first().slideUp();
                    }
                  });
.menu-trigger {
	display: inline-block;
	vertical-align: middle;
	cursor: pointer;
	width: 33px;
	margin: 0 0 0 15px;
	transition: 275ms all ease;
}
.menu-trigger span {
	display: block;
	height: 3px;
	background: #233e6b;
	margin-bottom: 4px;
	-webkit-transition: 275ms all ease;
	transition: 275ms all ease;
}
.main-menu {
	position: absolute;
	top: 100%;
	right: -10px;
	width: 100vw;
	z-index: 100;
	background: #fff;
}
ul.menu {
max-height: calc(100vh - 55px);
	overflow: auto;
}
<div class="menu-block">
  <div class="main-menu">
	<div class="menu_wrapper">
	  <ul class="menu">
		<li>Menu 1</li>
		<li>Menu 2</li>
	  </ul>
	</div>
  </div>
  <div class="menu-trigger">
	<span></span>
	<span></span>
	<span></span>
  </div>
</div>

这是因为您使用了 div 附加了单击事件。

您的 div.menu-trigger 应该是一个 Button[type="button"] 。

屏幕阅读器使用标记的语义来告诉它某些内容是否可操作。 Div 不是一个原生可操作的元素。

如果有人使用蓝牙键盘或类似键盘的设备(例如盲文键盘或开关设备),您也会遇到麻烦,因为 div 无法聚焦,也无法通过按 Enter 或空格键进行操作。按钮元素可以解决所有这些问题。

如果您确实无法使用按钮,那么您将需要执行一些 aria、tabindex 和 JS 繁重工作。

所以要么这样做:

<button type="button" class="menu-trigger">

或者,使用 aria 角色、tabindex 和额外的 JS,您需要执行以下操作:

<div class="menu-trigger" role="button" tabindex="0">
// then make sure the JS fires on click and on the enter and spacebar keypress events.
// this mimics the keyboard and focus features that are baked in with the button element

重要的:不要忘记使用一些屏幕阅读器专用的文本来告诉屏幕阅读器用户菜单按钮的用途。使用按钮元素即可轻松完成 - 只需添加 aria-label="open the menu"。然后在菜单打开后,将 aria-label 更改为“close菜单”。

<button type="button" class="menu-trigger" aria-label="open the menu">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 IOS 上启用语音时,移动菜单无法打开 的相关文章

随机推荐

  • sourcetree 行结束问题

    我遇到了一个非常奇怪的空白问题 我正在使用 WordPress 网站的本地副本 并在 wp content themes 文件夹中使用 git 存储库 以便跟踪对任何主题的所有更改等 当我设置存储库时 它认为每个文件 除了 gitignor
  • 无法使用 Android 版 Chrome 播放 blob-url 视频

    我在尝试在 Android 版 Chrome 中录制和播放视频时遇到了一个不寻常的问题 相同的代码在桌面版 Chrome 上运行良好 首先 一些信息 安卓4 4 2 适用于 Android 的 Chrome 40 0 2214 89 它适用
  • Kubernetes 中的一个节点上仅允许一个类型的 pod

    如何在 Kubernetes 中的一个节点上仅允许一个类型的 pod 守护进程集不适合此用例 例如 限制一个节点上仅调度一个 Elasticsearch pod 以防止节点出现故障时数据丢失 可以通过仔细规划Pod的CPU 内存资源和集群的
  • 钥匙斗篷|无法在异步函数中等待 updateToken()

    我们正在使用 React Redux 前端开发 Spring 应用程序 我们成功地将其与 Keycloak 身份验证服务集成 但是 访问令牌超时后 我们遇到了不需要的行为 我们的restMiddleware 看起来像这样 简化 functi
  • 将其他分支重置为当前分支,无需签出

    我正在为我的 Git 工作流程编写一些脚本 我需要将其他 现有 分支重置为当前分支 而无需签出 Before CurrentBranch commit A OtherBranch commit B After CurrentBranch c
  • 如何通过js启用/禁用浏览器历史记录

    我们可以通过java脚本代码启用或禁用浏览器历史记录吗 如果可能的话请告诉我执行此操作的机制 我认为这是不可能的 你可以尝试使用document location replace 它用于清除历史记录中的最后一个条目并将其替换为新 url 的
  • 在 PHP 7.4 中生成 SOAP 数组

    我一直在工作项目中使用 SOAP API 我很幸运 WSDL 基本上毫无意义 因为请求的正文是
  • C++11 线程不能与虚拟成员函数一起使用

    我试图让一个类运行一个线程 它将在循环中调用一个名为 Tick 的虚拟成员函数 然后我尝试派生一个类并重写 base Tick 但在执行时 程序只是调用基类的 Tick 而不是覆盖它 有什么解决办法吗 include
  • 尝试在单独的工作表中复制粘贴单元格时出现 VBA 运行时错误 1004

    目前 我的 VBA Excel 2007 代码中出现以下错误 运行时错误 1004 对象 Worksheet 的方法 Range 失败 在通过标题中的这个错误解决了相当多的问题后 我还没有找到类似的情况或解决我的问题的方法 也就是说 如果不
  • Android:带有 FragmentTabHost 的底部选项卡

    我试图将 FragmentTabHost 放在屏幕底部 不久前 我能够使用常规 TabHost 做到这一点 如下这个线程 https stackoverflow com questions 2395661 android tabs at t
  • +1 和 -1 之间的差异

    gt t 1 1 Num a gt a gt a gt t 1 1 Num a gt a 为什么第二个不是函数 我必须写吗 1 或者 还有更好的方法 这是因为 1 然而被解释为消极的 1 被解释为柯里化函数 x gt 1 x 在哈斯克尔中
  • 如何将 Visual Studio 附加到尚未启动的进程?

    我的 NET 程序由于某些原因无法从 Visual Studio 运行 从 Excel 2010 模板项目创建的 Excel 文件 我需要调试启动事件 如果我想调试程序初始化后发生的事件 那么没有问题 我从资源管理器运行该程序 将进程附加到
  • 如何在Android-ndk中将变量内容输出到“LogCat”窗口

    我在 Eclipse ADT 环境中使用 Android sdk ndk 在Android sdk Java开发中 我可以使用 Log i Log w 语句将消息和变量内容输出到 LogCat 窗口 然而 在Android ndk C C
  • 创建按字母顺序索引的列表 (ColdFusion + Microsoft SQL Server)

    我目前正在努力寻找知道如何做到这一点的人 我尝试了几种不同的方法 最终得到了一半的结果 但并不完全是我想要的 基本上我正在尝试创建一个显示所有乐队 A Z 的列表 但乐队名称是从数据库中调用的 所以我必须在嵌套列表中使用 band name
  • 如何验证“Cache-Control”、“无缓存、无存储、必须重新验证”

    我正在学习缓存以及如何管理它 当我打开网站页面时 我可以看到图像 css 文件 js 文件等静态内容存储在临时文件夹中 但现在 当我在响应标头中添加这些属性时 我看不到缓存行为的任何变化 所有内容都像以前一样被存储 即使我在 js 文件中进
  • Thymeleaf:我可以在表达式中使用消息吗

    我在 Spring Boot 应用程序中使用 Thymeleaf 3 目前 我想在 EL 表达式 Spring EL 中使用消息表达式 第一个用例 修剪消息 data title message key trim 第二个用例 有条件地创建一
  • 如何停止工作表中的程序执行?

    如何在 Scala 工作表中停止程序执行 如果代码正在执行并且不返回 无限循环 那么似乎不可能在不重新启动 Eclipse 的情况下停止程序执行 From https github com scala ide scala worksheet
  • 如何在 Linux 中终止单个 TCP 连接?

    我有一个进程在不同的端口上打开到多个浏览器的多个 tcp 连接 使用 netsat 的输出是这样的 tcp 0 0 server1 something myprog client1 something 49987 ESTABLISHED t
  • jQuery DataTables - 启动缓慢,“正常”html 表显示在开头

    我正在使用 jQuery DataTable 插件 但我担心脚本加载似乎需要一些时间 所以我的网页总是首先显示普通的 html 表格 在所有脚本完成后 该表格将变成 DataTable 我觉得这种样子不太能接受 所以希望能在这里得到一些建议
  • 在 IOS 上启用语音时,移动菜单无法打开

    我正在使用 Safari 浏览器在 ios 中打开我的网站 移动菜单工作正常 当我点击菜单图标 三行图标 时它会打开 但是 当我启用语音然后进入浏览器并点击该菜单图标时 移动菜单未打开 这是CSS问题还是我必须添加一些aria属性 有人能帮