Search code examples
htmlaccessibilitysection508

Accessible, lengthy Terms of Service acceptance


A lengthy Terms of Service (TOS) is displayed in a scrolling div so the "Accept Terms" button remains visible beneath it in small viewports.

  1. Does the scrolling div violate accessibility conventions, because:
    a. a sighted user may click the "accept terms" button without reading the entire document, while b. a person using a screen reader must hear the entire TOS before accessing the button?

  2. Does providing a screen-reader "skip" link somehow invalidate the TOS acceptance?

Imagine https://stackoverflow.com/legal/terms-of-service/public in a scrolling div, with an acceptance button visible beneath it.


Solution

  • Is it required to scroll the div to the bottom before the Accept button is activated?

    If the accept button is always activated then the answer is simple, make sure that the accept button is a valid tab selectable target and is either a button (same page) or link (another page).

    Screen Reader users are used to navigating past Terms of Service (ToS) by looking for the next link or button.

    If the accept button is only activated once the div has been scrolled to the bottom - this is where you may need a minor redesign.

    The whole purpose of the scroll to bottom is to 'confirm'** that a user has read the ToS.

    Instead have a button that shows the ToS in a (second) modal and locate the close button after all of the text within that modal.

    Only activate the Accept button once the close button in the ToS (second) modal has been pressed.

    This way you can 'prove' that the terms have been read.

    ** I put confirm in quotes here here because let's face it nobody actually reads them even if you implement this out-dated practice, they simply just have to scroll a box before ignoring the ToS. If you can make the decision go with the first option of just a link or button to Accept.

    Idea: If you want you could use some 'visually hidden' (CSS trick) skip link that says "yeah I don't read Terms of Service but I accept them anyway, take me to the accept button" and jump them to the accept button......no idea if that is legally compliant though :-)