Does NVDA turn role=application into Browse mode traps?

Samuel Kacer


I am just wondering why NVDA treats areas of web pages marked as applications with the role attribute the way it does. The problematic behavior I see is when the user enters the content inside of an application area on a web page, it seems they can't exit it using browse mode commands, i.e. navigating out with arrow keys, or jumping to a heading outside of the application area. Effectively, after entering an application area, the contents of it are treated as if they are the entire web document and browse mode only can get you around that subsection, but not out of it. The only way I've found to navigate out of the application area is by using object navigation.

To give an example, consider this simple web page:
<h1>Page title</h1>
<p>Some initial text.</p>
<div role="application">
Content inside application.<br />
<button>Some button</button>
<p>Some stuff after the application.</p>

When the user loads up this page in their browser, they can use arrow keys in browse mode to read there is the heading, some text, then an application, and some text after that. Now, if they enter the content inside the application by tabbing to it (which focuses them on a button inside), as far as I can tell, they are trapped in that application. Switching back to browse mode, when they arrow around, they can only read things inside the application area. Pressing shif + H doesnt jump to the heading at the beginning of the page.

The reason I am bringing this up is because I am working on a non-standard widget that doesn't behave like any of the standard ones like buttons, tables, edit fields, etc. I want to singal this fact to the user via its role. The widget can be embedded in many parts of a web document. The problem I am running into though is very much what I described, namely once a user enters one of the application areas, they are stuck there and cant easily navigate back to the web content outside of it.

I feel like there is something I am missing. What sort of design pattern should I implement to allow the user a practical way of exiting the application and getting back to the rest of the document. I would appreciate if someone could help me figure out how I am supposed to handle this!


Join to automatically receive all group messages.