Forum Discussion

L3's avatar
L3
Community Member
13 days ago

An accessibility issue that worries me...

Screen readers and dynamic objects

Objects on a slide can be dynamic - ie. not visible for the entire duration of the slide. When a slide in eLearning is first 'viewed', the screen reader has access to all the text, alt text and interactive objects that are 'visible' but not those hidden.

If a hidden object becomes visible, a screen reader like NDVA can then access that object but how does the screen reader user know that something else has appeared?

The object could audibly announce its presence. Something like "there is a new object. Please use the arrow and/or tab keys to go through all the objects you have already navigated to find what's new" (lol) - not ideal!

I'm sure I'm overthinking this.....

  • Hi L3 I think you are right to worry about these things.

    If you have dynamic content that appears on the slide based on a trigger or timeline action, there is no official method for handling this in Storyline.

    If hand coding something like this, we might use an attribute such as aria-live="assertive" or role="alert" to ensure the content is announced to the screen reader.

    The most reliable method I have found is to use the Storyline layers, as these can sometimes trigger automatic reading. In order for the layer to "announce" the content, they must be configured as exclusive content thought (either as a Dialogue, or by selecting the "Prevent the user from clicking on the other layers" option). This will ensure the content is announced.

    If using the Dialogue configuration on the layer, it works best when using the Label property. The text that is selected as the Label will be announced. If using a Layer configuration, the text that is #1 in the focus order of the layer will be announced.

    There is no other way I know of having the screen reader announce new content on screen other than using exclusive layers or dialogue layers.

    The up/down side to this is that the user cannot select or read anything on the base layer when the layer/dialogue is open. I say up-side as it can definitely be used to advantage in some instances when wanting to steer screen reader users through content, but it also have a major down-side as you may end up duplicating content on the base layer that should still be available to interact with or read.

    The other method is just to ensure the content is in the correct focus order, which is another technique I use. For example, if I click on a button, and some new content appears on the slide, the new content just needs to be below that button, so if I'm using assistive technology, my natural progression through the content is to continue to move down. Therefore, if I select a button, and nothing appears to happen, I then move down the contents with my cursor, and discover the new content. It's not ideal, but I think it does at least ensure users will locate the content even if we cannot announce it to them.

    My strategy is to first attempt to use exclusive layers. If this is not practical for any reason, I then fall back to just ensuring the content appears in the correct focus order. I would say 19 times out of 20 I can use layers, but it does impact the way you build your slides and changes the approach to development if thinking of assistive technology first.

    You might also find this bit of JavaScript useful that I developed and posted in the Accessibility Group. On revisiting this JavaScript, I recognised I could easily modify it to announce the target contents to screen readers.

    Storyline custom focus control

  • I alawys go with the practice that changes form hidden are only user initiated e.g. by pressing a button, I would then as Sam states have the content after the button in the focus order. 

    I would never have a hidden object appear on a layer or base layer based off of cue points/time