NVDA触发了我的菜单

时间:2017-09-23 21:52:48

标签: javascript accessibility nvda

以下链接包含我最初由Marcy Sutton设想的拉出式菜单设计的扩展。我想要的效果是创建一个包含子菜单的导航菜单。在屏幕阅读器的上下文中,此按钮中的元素将被禁用,直到有人按下按钮打开所需信息。

在Firefox,Chrome和IE上测试此菜单后,菜单按预期运行。然而,当运行名为NVDA的流行屏幕阅读器时,错误的按钮似乎会启动。以下是重现错误的步骤:

  1. 使用标签和空格键,我打开了“投资组合”子菜单。这突出显示了网站1链接。
  2. 使用shift和tab,我向后导航到[X]菜单(“关闭主菜单”)按钮。当我这样做时,投资组合按钮会再次自动关闭。到目前为止的正常行为。
  3. 此时尝试重新打开投资组合按钮会导致a)主导航菜单按钮触发其事件,因此菜单关闭,或b)菜单关闭,因为不知何故焦点跳转到标题(这是一个链接)。
  4. Codepen:https://codepen.io/nitronova/pen/qPbpMO

     function initApp()
     { // Bind actions to functions.
      navButton.addEventListener( "click", handleNavButtonClick, false );
      conWrap.addEventListener( "click", handleOutMenuClick, false );
      document.body.addEventListener( "keyup", handleKeyup, false ) /* navMenu. */
      for( var i = 0; i < navButtons.length; i++ ) 
      {
       navButtons[i].addEventListener( "click", handleSubMenuButtonClick, false );
       console.log('closing submenus init');
       closeSubMenu(navButtons[i]);
      }
      console.log('closing the nav menu init');
      closeNavMenu();
     }
    

    请注意:主导航按钮(“navButton”)获取自己的函数handleNavButtonClick,而子菜单(“navButtons”)获取handleSubMenuButtonClick。两个完全独立的功能。问题不在于脚本中的函数,而在于NVDA如何导致错误的函数(或事件触发器)触发。

    没有错误消息;行为路径是问题所在。我有截图,证明在NVDA运行时错误的事件正在触发。 https://imgur.com/a/OW1Iv

    老实说,我仍然是JavaScript的新手。这里有没有人对此有任何解释?有什么我做错了吗?

1 个答案:

答案 0 :(得分:0)

看起来像是NVDA中的一个错误,以下是此问题根本原因的摘要。

https://github.com/nvaccess/nvda/issues/8326