Запобігання зупинці табуляції на Елементі (прив’язка) в HTML


152

Чи можна відмовитись <a href="...">від зупинки вкладки в будь-якому браузері? Я хотів би зробити це без Javascript.

Відповіді:


265

Деякі браузери підтримують tabindex="-1"атрибут, але не всі вони, оскільки це не стандартна поведінка.


22
Чудово! Дякую! Я перевірив FF3.5, IE8 і CH3, і він працює у всіх трьох. Завдяки мільйонів!
Роберт Коритник

1
Не хвилюйтеся з цього приводу: так само, як тут заявляє zzzzBov , HTML5 прийшов на допомогу і стандартизував цю функціональність. Тож тепер винні браузери - це ті, хто цього пропускає.
TechNyquist

1
Майте на увазі, що відключення табуляту на гіперпосиланні суперечить правилам доступності (наприклад, люди, які використовують зчитувачі екрана тощо). Якщо ви знаєте, що це не проблема для вашої бази користувачів, тоді це повинно бути добре.
Рікардо Санчес

73

Сучасні, сумісні з HTML5, веб-переглядачі підтримують [tabindex]атрибут , де значення -1символу запобігає вкладці елемента.

Якщо значення є негативним цілим числом
Агент користувача повинен дозволити фокусуванню елемента, але не повинен дозволяти досягти елемента за допомогою навігації по послідовному фокусуванню.


1
Виписки з документації завжди допомагають. ;-) Це говорить про те, що ті, хто це не підтримує, є одними з небагатьох, і вони, швидше за все, підтримають це рано чи пізно.
Роберт Коритник

15

Ви можете застосувати обробник JQuery до елемента, на який потрібно націлити кілька елементів, без зупинки табуляції.

$(document).ready(function () {
    $('.class').attr('tabindex', '-1');
});

Був би один із способів зробити це ...


6

Я думаю, що ви могли це зробити за допомогою javascript, перевстановити window.onkeypressабо onkeydown, переключити кнопку вкладки та встановити фокус у потрібному порядку.


2
Я не знаю, чи ви перевірили інші відповіді, особливо прийняті відповіді, на які відповіли рік тому, і вирішили цю проблему без використання Javascript.
Роберт Коритник

2
Я ціную альтернативне рішення, навіть якщо воно не стосується ОП, а також прийняту відповідь. Не потрібно зневажати.
Ентоні Дісанті

@Anthony DiSanti: Це правда, але в цьому конкретному випадку я все ще не розумію, чому можна вдатися до JavaScript, якщо щось інше працює краще? Тож якщо це не відповідь на це питання, чому це тоді тут? Не звертай уваги. Javascript, як правило, є останнім кроком, який слід зробити, якщо певні речі неможливо зробити інакше. І мені шкода @Ammosi, якщо я образив тебе. Я не мав на увазі бути грубим. Дякую за пізню відповідь.
Роберт Коритник

7
Я погоджуюся уникати JavaScript, якщо є рішення, засновані на стандартах HTML або CSS. Однак у цьому випадку цього немає. Оригінальний плакат не потребував підтримки браузерів до IE8 та FF3.5, але для моєї роботи мені потрібно підтримати назад до IE6. Тому розчин табіндексу не застосовується. Надання єдиного робочого рішення в браузері з найбільшою часткою на ринку не повинно перешкоджати.
Ентоні Дісанті

4

Видаліть hrefатрибут із тега прив’язки


що, якщо я не можу?
Hakan Fıstık

Якщо ви хочете використовувати javascript, незважаючи на питання, щоб уникнути подібних рішень, для видалення атрибутів href, використовуйте jquery для завантаження документа з чимось подібним$('[href="whatever-the-url-is"]').removeAttr('href');
Jonas Lundman

6
LOL видалити href
quemeful
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.