将动态内容拆入到DOM中并紧跟触发该内容的元素____20160831

原文地址


说明

该技巧的目的是将用户界面元素插入到DOM中,并且tab顺序和屏幕阅读器顺序被设置为用户代理的默认正确顺序。该技巧可被用在隐藏和出现的用户界面元素,例如菜单和对话框。

屏幕阅读器的阅读顺序是基于DOM中HTML或XHTML元素的顺序,是默认tab顺序。该技巧将新内容插入到DOM中,其焦点顺序紧跟触发新内容的元素后。触发元素必须是个链接或按钮,脚本必须从其点击事件中调用。这些元素默认可聚焦,他们点击事件是设备独立的。插入新内容后,焦点仍停留在激活元素上,tab顺序和屏幕阅读器阅读顺序的下一个焦点是新内容。

该技巧在同步刷新时有效。对于同步刷新(有时被称之为AJAX),一个额外的技巧是需要告知辅助技术同步内容已经被插入。


样例

样例1:

该样例当链接被点击时,创建了一个按钮,并将其插入到连接后。该链接的点击事件被用来调用ShowHide脚本,将ID作为一个参数传递给新菜单。

ShowHide创建一个包含新菜单的,div,并插入到链接之后。最后一行代码是脚本的核心代码。它找到触发脚本元素的父亲,并将其创建的div作为子元素添加上。这会让新的div在链接的后面,在DOM中。当用户点击tab,焦点将会去到菜单中第一个可聚焦的元素。


效果