nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.1k stars 636 forks source link

NVDA turns focus mode on and off when navigating between text inputs hosted in different iframes in Chrome #12722

Open ochalet-wp opened 3 years ago

ochalet-wp commented 3 years ago

Let's take the example of a page with 3 fields hosted in 3 different iframes:

Steps to reproduce:

  1. Start NVDA and navigate to https://ochalet-wp.github.io/nvda/ in Chrome
  2. Wait for NVDA to have fully read the content of the page
  3. Click or tab into Field 1
  4. Attempt to enter text and confirm that you can enter text
  5. Click or tab into Field 2
  6. Attempt to enter text and confirm that you cannot enter text
  7. Click or tab into Field 3
  8. Attempt to enter text and confirm that you can enter text

Actual behavior:

NVDA turns off focus mode for Field 2 and I cannot enter text

Expected behavior:

NVDA leaves focus mode on for Field 2 and I can enter text.

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

Release 2021.1

Windows version:

Windows 10 Version 2004 (OS Build 19041.1110)

Name and version of other software in use when reproducing the issue:

Chrome version 92.0.4515.131

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

No

If add-ons are disabled, is your problem still occurring?

Yes

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

feerrenrut commented 3 years ago

Hi @ochalet-wp, thanks for the report, however please provide a minimal example. Having to install and run node to demonstrate something like this is excessive. From the description it should be reproducible with a simple HTML example. You could consider making a codePen or jsBin for the example.

ochalet-wp commented 3 years ago

Hi @feerrenrut, thank you for the feedback. I have updated the steps to reproduce the issue with a simple HTML example.

feerrenrut commented 3 years ago

Thanks @ochalet-wp, I have tested this with Edge (Chromium) and NVDA 2020.1. Using tab to move between fields I get the following speech:

Field 1  edit  Enter value 1  blank
Focus mode
frame    clickable  Field 2  edit    Enter value 2
Browse mode
Field 3  edit  Enter value 3  blank
Focus mode

The changes between focus and browse mode seem to alternate depending on what mode NVDA is in first, this doesn't seem to be anything specific to the controls.

Note: @ochalet-wp, when NVDA is in browse mode, it captures keyboard input, the keys become shortcuts to make navigation easier. For-instance h jumps to the next heading. By default browse mode is signified via an earcon "boop" sound, focus mode has a "click" sound. In browse mode settings these sounds can configured to use speech. A user can manually toggle between the modes with NVDA+space.

ochalet-wp commented 3 years ago

Hi @feerrenrut, thank you for the detailed analysis.

I understand that NVDA automatically switches on focus mode when the user navigates to an editable field (although that option can be switched off by the user). So isn't it a case that in our example focus mode should remain turned on when moving the focus from Field 1 to Field 2?

feerrenrut commented 3 years ago

Yes, this sounds like a problem. I suspect the difficulty comes from the iframes.

In case the original sample disappears, here is a codepen: https://codepen.io/reefturner/pen/MWoGgda

luismartinezs commented 1 year ago

I'm running into the same issue with react-stripe-js inputs (which render inside its own iframe each). I see the error on both Firefox and Chrome. Is there any update on a fix or workaround for this?

Adriani90 commented 1 year ago

I tag here @ObjectInSpace and @aleventhal since this issue seems to be chrome specific.

ObjectInSpace commented 1 year ago

I haven't worked at Chrome for some time. (If you have any WhatsApp issues, I'm your guy!) I think Aaron does not check github much. If it's an issue in Chrome your best bet is to file it on crbug.com.