я наконец понял это. Я в основном пришлось
- Отключение рамки/скрипт, используемый для обработки хэш изменения
- Измените URL, чтобы указать на основное содержание
- Восстановить исходный URL и повторно включить то, что я отключил в # 1 ,
К примеру, у меня был случай, как это:
var onPageChange = function (newLocation, historyData) {
// load page
};
Первый, я изменил его:
var pageChangeEnabled = true;
var onPageChange = function (newLocation, historyData) {
if (pageChangeEnabled) {
// load page
}
};
А потом, ссылка Skip Navigation
выглядит следующим образом:
<a href="javascript:pageChangeEnabled=false;var oh=location.hash;location.hash='#content';location.hash=oh;pageChangeEnabled=true;void(0);" id='skipNav'>Skip Navigation</a>
Для облегчения понимания, это код в href
:
// disable navigation
pageChangeEnabled=false;
// save current hash
var oldHash=location.hash;
// update the hash/anchor, make everything work
location.hash = '#content';
// restore the old hash, as there are no elements that have the same
// name of the URL, it works
location.hash = oldHash;
// re-enable page navigation
pageChangeEnabled=true;
// void(0); is just to avoid the navigation of the link
void(0);
UPDATE: Как пояснил Адам, это не в полной мере работать как навигация с помощью клавиатуры не меняется. Я закончил делать: $('#content').attr('tabindex', '-1').focus();
Вы используете систему SPA? Было бы полезно узнать подробности о том, как вы обрабатываете маршрутизацию. Например, есть некоторые [возможные решения для угловых] (http://stackoverflow.com/questions/14712223/how-to-handle-anchor-hash-linking-in-angularjs) пользователей. – Jasen
@ Ясен Нет, я не.Я использую простую библиотеку JS для обработки истории браузера, но все. В примере, который вы видите, я вижу, что он только прокручивается, но не работает с клавиатурной навигацией или экранными программами. –