我目前正在开发一个需要遵循“WCAG 2.0”指南的 HTML5 单页应用程序。
我使用 Twitter Bootstrap 作为前端框架,使用 Durandal.js 作为 SPA 部分。
在不干扰 Durandal.js 的路由器的情况下实现“跳过导航”技术的最佳方法是什么?Durandal 明智的做法是在哪里放置标记的最佳位置。索引.html?外壳.html?( index.html 可能为时过早,因为我的 i18n 模块可能尚未加载,但这是另一个问题;))
这是一个使用 Bootstrap 的示例(仅对屏幕阅读器可见),但由于 Durandal 有一个基于哈希的路由系统,我们可能会遇到问题。
<body>
<a href="#content" class="sr-only">Skip to main content</a>
<div class="container" id="content">
The main page content.
</div>
</body>
谢谢。
- - 编辑 - -
这就是我实现它的方式:
HTML:
<a tabindex="1" href="#" id="skipNavigation" data-bind="click: skipNavigation">
Skip to main content
</a>
CSS:
#skipNavigation {
background-color: transparent;
color: transparent;
}
#skipNavigation:focus {
background-color: #f5c03a;
color: #222;
}
JS:
skipNavigation: function () {
var module = router.activeInstruction().config.moduleId.split("/")[1],
$elem = $('#content');
if (module === "xxx") {
$elem = $('.selector');
} else if (module === "yyy") {
$elem = $('.selectorY');
}
$elem.focus();
system.log("Skipping navigation for page '" + module + "', and setting focus to element '" + $elem.selector + "'");
}