Fixes by subject · 38 techniques
How to Fix Scripted and Dynamic Content
Content that changes after load is where automated testing stops. A scan sees one state per page, and the bug is usually in the second one.
A page that loads once and sits still is comparatively easy to get right. A page that updates a cart total, opens a modal, filters a list and validates a field as you type has to tell somebody each of those things happened. No scanner will ever check that, because a scan looks at one state per page and never opens the dialog, submits the form or triggers the error. The techniques here cover pairing mouse handlers with keyboard ones, and managing focus as content appears and disappears. They also cover making hover content dismissible and persistent, honoring the reduced-motion preference in JavaScript, and providing alternatives to dragging and path-based gestures. Two of those are narrower than their names suggest. The dragging rule does not reach anything the browser handles for you, so ordinary scrolling is outside it. And the gesture rule asks for a single pointer rather than a single tap, which means a one-finger swipe already counts.
All 38 techniques
They run in technique order, and each one carries a tag. Sufficient techniques satisfy a rule. Advisory ones help without being required. Failures document a specific way of getting it wrong. None of them is mandatory, because W3C publishes techniques as documented ways of meeting a criterion rather than the only ways, so your own approach conforms as long as it meets the criterion.
- C42Sufficient2.5.8Space small targets with min-width and min-height
- C44Sufficient2.5.5Make targets at least 44 by 44 pixels
- SCR1Sufficient2.2.1Let users extend a script's time limit
- SCR2Sufficient2.1.1Pair every mouse handler with a keyboard one
- SCR14Sufficient2.2.4, 4.1.3Let users switch nonessential alerts off
- SCR16Sufficient2.2.1Warn users before a time limit runs out
- SCR18Sufficient3.3.1, 3.3.3, 3.3.4Validate in the browser and describe the error
- SCR19Sufficient3.2.2, 3.2.5Never change context when a select changes
- SCR20Sufficient2.1.1Give device-specific scripts a keyboard path
- SCR22Sufficient2.2.2Stop scripted blinking within five seconds
- SCR24Sufficient2.4.4, 2.4.6, 2.4.9, 3.2.5Open new windows only when the user asks
- SCR26Sufficient2.4.3Insert new content right after its trigger
- SCR27Sufficient2.4.3Reorder sections in the DOM, not just on screen
- SCR28Sufficient2.4.1Collapse repeated blocks so they can be skipped
- SCR29Advisory2.1.1Make a scripted div or span keyboard-operable
- SCR30Sufficient2.4.4, 2.4.9Let users swap in self-explanatory link text
- SCR31Sufficient2.4.7Highlight the focused element with script
- SCR32Sufficient3.3.1, 3.3.3Put validation errors in the page as text
- SCR33Sufficient2.2.1, 2.2.2Give scrolling content a pause and a resume
- SCR34Sufficient1.4.4, 1.4.8, 1.4.10Compute sizes so they scale with the text
- SCR35Sufficient2.1.1Hang scripted actions on real links and buttons
- SCR36Sufficient2.2.1Offer a static view of moving text
- SCR38AdvisoryKeep a conforming fallback for a scripted page
- SCR39Sufficient1.4.13Make hover content hoverable and dismissible
- SCR40Sufficient2.3.3Check prefers-reduced-motion before animating
- F95Failure1.4.13Do not show hover content the pointer cannot reach
- F101Failure2.5.2Do not trigger actions on the down-event
- F105Failure2.5.1Do not require swipes without a single-tap alternative
- F106Failure2.5.4Do not ship motion controls without an off switch
- F108Failure2.5.7Do not make dragging the only way to move things
- G208Sufficient2.5.3Include the visible label in the accessible name
- G210Sufficient2.5.2Make every drag-and-drop action cancellable
- G211Sufficient2.5.3Match accessible names to visible labels exactly
- G212Sufficient2.5.2Use native controls that activate on release
- G213Sufficient2.5.4Give motion-activated features conventional controls
- G215Sufficient2.5.1Provide simple controls for complex gestures
- G216Sufficient2.5.1Let sliders work with single taps
- G219Sufficient2.5.7Give every drag action a click alternative
More on Scripting and dynamic content
The other 13 subjects
Knowing the technique is not the same as knowing you need it.
The free scan checks 10 pages in a real browser and maps every machine-checkable failure to the exact fix guide that clears it.