Skip to content

Commit

Permalink
Aria22 modification for aria-atomic (#1699)
Browse files Browse the repository at this point in the history
Addressing changes in response to #1137 
Adding an explicit `aria-atomic="true"` in Technique [ARIA22: Using
role=status to present status
messages](https://www.w3.org/WAI/WCAG21/Techniques/aria/ARIA22) and the
linked examples (search results, shopping cart) since the default
behaviour of `role="status"` (reading the entire content of a changed
container marked with `role="status"`) is currently not well supported.

The change to search results example is actually unnecessary since the
entire content is written into the container and thus exposed. So not
sure whether it is better to skip that change, or change both examples
for consistency's sake.

Closes #1137

---------

Co-authored-by: Patrick H. Lauke <[email protected]>
Co-authored-by: Mike Gower <[email protected]>
  • Loading branch information
3 people authored Dec 13, 2024
1 parent 6ee72a7 commit 4ab41ba
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
8 changes: 4 additions & 4 deletions techniques/aria/ARIA22.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,20 @@ <h2>When to Use</h2>
<h2>Description</h2>
<p>
This technique uses the <code>status</code> role from the ARIA specification to notify Assistive Technologies (AT) when content has been updated with information about the user's or application's status. This is done by adding <code>role="status"</code> to the element that contains the <a>status message</a>. The aria live region role of <code>status</code> has an implicit <code>aria-live</code> value of <code>polite</code>, which allows a user to be notified via AT (such as a screen reader) when status messages are added. The role of <code>status</code> also has a default <code>aria-atomic</code> value of <code>true</code>, so that updates to the container marked with a role of <code>status</code> will result in the AT presenting the entire contents of the container to the user, including any author-defined labels (or additional nested elements). Such additional context can be critical where the status message text alone will not provide an equivalent to the visual experience. The content of the aria-live container is automatically read by the AT, without the AT having to focus on the place where the text is displayed. See <a href="https://www.w3.org/TR/wai-aria/#status">WAI-ARIA status (role)</a> for more details.</p>

<p>Note that since <code>role="status"</code> is currently not treated as atomic by default in some environments, it is advisable to add an explicit <code>aria-atomic="true"</code> if the entire contents of the container should be announced.</p>
</section>
<section id="examples">
<h2>Examples</h2>
<section class="example">
<h3>Including a search results message</h3>
<p>After a user presses a Search button, the page content is updated to include the results of the search, which are displayed in a section below the Search button. The change to content also includes the message <samp>"5 results returned"</samp> near the top of this new content. This text is given an appropriate role for a status message. A screen reader will announce "5 results returned".</p>
<pre xml:space="preserve"><code class="language-html">&lt;div role="status"&gt;5 results returned.&lt;/div&gt;</code></pre>
<pre xml:space="preserve"><code class="language-html">&lt;div role="status" aria-atomic="true"&gt;5 results returned.&lt;/div&gt;</code></pre>
<p class="working-example"><a href="../../working-examples/aria-role-status-searchresults/">Working example: role=status on search results</a></p>
</section>
<section class="example">
<h3>Updating the shopping cart status</h3>
<p>After a user presses an Add to Shopping Cart button, content near the Shopping Cart icon updates to read "1 items". The container for this text (in this case a <code class="language-html">&lt;p&gt;</code>) is marked with the role of <code class="language-html">status</code>. Because it adds visual context, the shopping cart image &#8212; with succinct and accurate <code class="language-html">alt</code> text &#8212; is also placed in the container. Due to the default <code class="language-html">aria-atomic</code> value, a screen reader will announce "Shopping cart, six items".</p>
<pre xml:space="preserve"><code class="language-html">&lt;p role="status" &gt;
<p>After a user presses an Add to Shopping Cart button, content near the Shopping Cart icon updates to read "1 items". The container for this text (in this case a <code class="language-html">&lt;p&gt;</code>) is marked with the role of <code class="language-html">status</code>. Because it adds visual context, the shopping cart image &#8212; with succinct and accurate <code class="language-html">alt</code> text &#8212; is also placed in the container. Due to the <code class="language-html">aria-atomic</code> value, a screen reader will announce "Shopping cart, six items".</p>
<pre xml:space="preserve"><code class="language-html">&lt;p role="status" aria-atomic="true"&gt;
&lt;img src="shopping-cart.png" alt="Shopping Cart"&gt;
&lt;span id="cart"&gt;0&lt;/span&gt; items
&lt;/p&gt;
Expand Down
2 changes: 1 addition & 1 deletion working-examples/aria-role-status-searchresults/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ <h1>Using <code>role=status</code> to Provide Status Message on Search Results</
</div>
<h2>Results</h2>

<p role="status" id="resultsmsg"></p>
<p role="status" aria-atomic="true" id="resultsmsg"></p>


</div>
Expand Down
2 changes: 1 addition & 1 deletion working-examples/aria-role-status-shoppingcart/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<h1>Using <code>role=status</code> to Provide Status Message on Shopping Cart</h1>
<p>This simple script demonstrates how a shopping cart counter is updated and surfaced using the aria <code>status</code> role. Here the role is placed on the paragraph containing the dynamically updated text, and the shopping cart image's alt provides additional context. Due to the default <code>aria-atomic="true"</code>, a screenreader should announce "Shopping Cart # items" or (depending on browser compatibility) "# items" each time the Buy Pink Flamingos button is selected.</p>
<hr>
<p role="status"><img src="shopping-cart.png" alt="Shopping Cart"><br>
<p role="status" aria-atomic="true"><img src="shopping-cart.png" alt="Shopping Cart"><br>
<span id="cart">0</span> items</p>

<h2>Shop at our single-product store</h2>
Expand Down

0 comments on commit 4ab41ba

Please sign in to comment.