используя ключ доступа для браузера, чтобы подчеркнуть первый символ всех ссылок с ключами доступа - PullRequest
1 голос
/ 01 сентября 2010

Я пытаюсь выяснить, как использовать dom для доступа к клавишам доступа каждой ссылки с ключом доступа и подчеркнуть первый символ всех ссылок на странице при нажатии клавиши доступа.

то есть когда человек нажимает alt в IE и Chrome, все первые буквы ссылок подчеркивают, давая человеку понять, какую клавишу нажать.Также есть ли способ сделать это, создав универсальный [ключ доступа] для всех браузеров, использующих javascript, или вы вынуждены использовать несколько методов для каждого браузера и, таким образом, застряли при написании класса для каждого браузера?

Я нашелодин способ, используя <span> вокруг символа, но это не кажется хорошей практикой, и было бы неплохо, если бы дом просто взял ключ доступа и подчеркнул букву в ссылке и изменил ее подчеркиванием.

Любая помощь с благодарностью.

1 Ответ

3 голосов
/ 01 сентября 2010
var labels= document.getElementsByTagName('label');
for (var i= labels.length; i-->0;) {
    var label= labels[i];
    if (!label.htmlFor) continue;
    var field= document.getElementById(label.htmlFor);
    if (!field) continue;
    if (!field.accessKey) continue;
    var ix= label.firstChild.data.toLowerCase().indexOf(field.accessKey.toLowerCase());
    if (ix===-1) continue;
    var next= label.firstChild.splitText(ix+1);
    var span= document.createElement('span');
    span.className= 'accesshighlight';
    span.appendChild(label.firstChild.splitText(ix));
    label.insertBefore(span, next);
}

Это обернет <span class="accesshighlight"> вокруг первой совпадающей буквы в метке, предполагая, что метки содержат текстовое содержимое, а не больше элементов (если вам нужно искать соответствующий текст в подэлементах, это немного больше времени).Затем вы можете сказать:

body.showhighlights .accesshighlight {
    text-decoration: underline;
}

и переключать присутствие class="showhighlights" на document.body при нажатии alt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...