Starting around the year 2000 developers and designers began using HTML + CSS + Javascript to create custom user interface widgets (e.g. interactive controls) for web pages that were not available from the standard set of HTML form controls.
There was no standard and inter-operable way to make these custom widgets accessible.
Issues
Keyboard support.
Describing the widget behavior (e.g. role).
Labeling the features of the widget (e.g. accessible name).
Identifying properties and states. (e.g. checked, expanded, has popup)
Communicating information through platform specific accessibility APIs.
Interoperability between browser and accessibility APIs.