Zapobiegaj zatrzymaniu tabulacji w elemencie A (łączu kotwicy) w HTML

152

Czy można anulować <a href="...">przechodzenie na kartę w dowolnej przeglądarce? Chciałbym to zrobić bez Javascript.

Robert Koritnik
źródło

Odpowiedzi:

265

Niektóre przeglądarki obsługują ten tabindex="-1"atrybut, ale nie wszystkie, ponieważ nie jest to standardowe zachowanie.

Roberto Aloi
źródło
22
Świetnie! Dzięki! Sprawdziłem z FF3.5, IE8 i CH3 i działa we wszystkich trzech. Stukrotne dzięki!
Robert Koritnik
1
Nie martw się o to: tak jak stwierdza tutaj zzzzBov , HTML5 przyszedł na ratunek i ujednolicił tę funkcjonalność. Więc teraz winne przeglądarki to te, które tęsknią.
TechNyquist
1
Należy pamiętać, że wyłączenie tabulatora na hiperłączu jest sprzeczne z regułami dostępności (np. Osoby korzystające z czytników ekranu itp.). Jeśli wiesz, że nie stanowi to problemu dla Twojej bazy użytkowników, powinno być dobrze.
Ricardo Sanchez
73

Nowoczesne, zgodne ze standardem HTML5 przeglądarki obsługują [tabindex]atrybut , w przypadku którego wartość -1uniemożliwia przypisanie elementu do karty.

Jeśli wartość jest ujemną liczbą całkowitą Klient
użytkownika musi umożliwiać skupienie się na elemencie, ale nie powinien pozwalać na dotarcie do elementu za pomocą sekwencyjnej nawigacji fokusu.

zzzzBov
źródło
1
Fragmenty dokumentacji zawsze pomagają. ;-) To mówi nam, że ci, którzy tego nie wspierają, są jednymi z nielicznych i prawdopodobnie poprą to wcześniej czy później.
Robert Koritnik
15

Możesz zastosować procedurę obsługi JQuery do elementu, który chcesz kierować na wiele elementów bez tabulacji.

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

Byłby to jeden sposób ....

dtharpe
źródło
6

Myślę, że mógłbyś to zrobić za pomocą javascript, nadpisując window.onkeypresslub onkeydown, przechwytuj przycisk tabulatora i ustawiając fokus w żądanej kolejności.

Ammosi
źródło
2
Nie wiem, czy sprawdziłeś inne odpowiedzi, szczególnie zaakceptowałeś tę, na którą odpowiedział około rok temu i rozwiązałeś ten problem bez użycia Javascript.
Robert Koritnik
2
Doceniam alternatywne rozwiązanie, nawet jeśli nie odnosi się do PO i zaakceptowanej odpowiedzi. Nie ma potrzeby lekceważyć.
Anthony DiSanti
@Anthony DiSanti: To prawda, ale w tym konkretnym przypadku nadal nie rozumiem, dlaczego ktoś miałby uciekać się do javascript, jeśli coś innego działa lepiej? Więc jeśli to nie jest odpowiedź na to pytanie, dlaczego jest tutaj? Nieważne. Javascript jest zwykle ostatnim krokiem, który należy wykonać, jeśli pewnych rzeczy nie można zrobić inaczej. Przepraszam @Ammosi, jeśli cię obraziłem. Nie chciałem być niegrzeczny. Dzięki za późną odpowiedź.
Robert Koritnik
7
Zgadzam się z unikaniem javascript, jeśli istnieje oparte na standardach rozwiązanie HTML lub CSS. Jednak w tym przypadku tak nie jest. Oryginalny plakat nie musiał obsługiwać przeglądarek starszych niż IE8 i FF3.5, ale w mojej pracy muszę obsługiwać ponownie IE6. Dlatego rozwiązanie tabindex nie ma zastosowania. Nie należy zniechęcać do dostarczania jedynego działającego rozwiązania w przeglądarce z największym udziałem w rynku.
Anthony DiSanti
4

Usuń hrefatrybut z tagu kotwicy

CodeDreamer68
źródło
co jeśli nie mogę?
Hakan Fıstık
Jeśli chcesz używać javascript pomimo pytania, aby uniknąć tego rodzaju rozwiązań, aby usunąć atrybuty href, użyj jquery document onload z czymś w rodzaju$('[href="whatever-the-url-is"]').removeAttr('href');
Jonas Lundman.
6
LOL usuń href
quemeful