È corretto utilizzare un tag anchor senza includere l' href
attributo e invece utilizzare un gestore eventi click JavaScript? Quindi ometterei href
completamente, senza nemmeno averlo vuoto ( href=""
).
È corretto utilizzare un tag anchor senza includere l' href
attributo e invece utilizzare un gestore eventi click JavaScript? Quindi ometterei href
completamente, senza nemmeno averlo vuoto ( href=""
).
Risposte:
In HTML5, l'utilizzo di un a
elemento senza href
attributo è valido. È considerato un "collegamento ipertestuale segnaposto".
Esempio:
<a>previous</a>
Cerca "hyperlink segnaposto" nella pagina di riferimento del tag di ancoraggio w3c: https://www.w3.org/TR/2016/REC-html51-20161101/textlevel-semantics.html#the-a-element .
Ed è anche menzionato sul wiki qui: https://www.w3.org/wiki/Elements/a
Un collegamento segnaposto è per i casi in cui si desidera utilizzare un elemento di ancoraggio, ma non farlo navigare ovunque. Questo è utile per contrassegnare la pagina corrente in un menu di navigazione o una traccia breadcrumb. (Il vecchio approccio sarebbe stato quello di utilizzare un tag span o un tag anchor con una classe denominata "active" o "current" per modellarlo e JavaScript per annullare la navigazione.)
Un collegamento segnaposto è utile anche nei casi in cui si desidera impostare dinamicamente la destinazione del collegamento tramite JavaScript in fase di esecuzione. Devi semplicemente impostare il valore dell'attributo href e il tag anchor diventa cliccabile.
Guarda anche:
href
l' cursor: pointer
stile non verrà aggiunto automaticamente all'elemento.
Va bene, ma allo stesso tempo può rallentare alcuni browser.
http://webdesignfan.com/yslow-tutorial-part-2-of-3-reducing-server-calls/
Il mio consiglio è utilizzare <a href="#"> </a>
Se stai usando JQuery ricordati di usare anche:
.click(function(event){
event.preventDefault();
// Click code here...
});
Risposta breve: No.
Risposta lunga:
Innanzitutto, senza un attributo href, non sarà un collegamento. Se non è un collegamento, non sarà accessibile da tastiera (o interruttore di respiro o vari altri dispositivi di input non basati su puntatore) (a meno che non si utilizzino funzionalità HTML 5 di tabindex
cui non sono universalmente supportate). È molto raro che un controllo non abbia accesso alla tastiera.
Secondo. Dovresti avere un'alternativa per quando JavaScript non viene eseguito (poiché il caricamento dal server è stato lento, è stata interrotta una connessione Internet (ad es. Segnale mobile su un treno in movimento), JS è disattivato, ecc. Ecc.).
Sfrutta il miglioramento progressivo di JS discreto.
href
era obbligatorio (a meno che non fosse un'ancora con nome, nel qual caso tabindex non aveva senso). L'uso di tabindex
aggiungere elementi sfocabili all'ordine di tabulazione è una nuova innovazione in HTML 5.
a
tag senza un href
attributo.
Se devi usare href per la compatibilità all'indietro, puoi anche usare
<a href="javascript:void(0)">link</a>
anziché #, se non si desidera utilizzare l'attributo
Il tag va bene da usare senza un attributo href. Contrariamente a molte delle risposte qui, ci sono in realtà ragioni standard per creare un'ancora quando non c'è href. Semanticamente, "a" significa un'ancora o un collegamento. Se lo usi per qualcosa che segue quel significato, allora stai bene.
Un uso standard del tag a senza href è la creazione di collegamenti denominati. Ciò consente di utilizzare un'ancora con nome = blah e in seguito è possibile creare un'ancora con href = # blah per collegarsi alla sezione denominata della pagina corrente. Tuttavia, questo è stato deprecato perché è anche possibile utilizzare gli ID nello stesso modo. Ad esempio, potresti usare un tag header con id = header e in seguito potresti avere un anchor che punta a href = # header.
Il mio punto, tuttavia, non è quello di suggerire di usare la proprietà name. Fornire solo un caso d'uso in cui non è necessario un href e quindi ragionare sul motivo per cui non è necessario.
href
attributo per un <a>
elemento che viene utilizzato come elemento interattivo (cioè un collegamento). Come hai detto, senza un href
attributo è semplicemente ... non un collegamento, solo un'ancora, che è una cosa completamente diversa.
Dal punto di vista dell'accessibilità <a>
senza un href non è tab-tab, tutti i collegamenti dovrebbero essere tab-tab quindi aggiungi un tabindex = '0 "se non hai un href.
Il <a>
tag senza "href" può essere utile quando si utilizzano menu a più livelli ed è necessario espandere il livello successivo ma non si desidera che l'etichetta di menu sia un collegamento attivo. Non ho mai avuto problemi ad usarlo in quel modo.
In alcuni browser incontrerai problemi se non stai dando un attributo href. Ti suggerisco di scrivere il tuo codice in questo modo:
<a href="#" onclick="yourcode();return false;">Link</a>
puoi sostituire yourcode () con la tua funzione o logica, ma ricorda di aggiungere return false; dichiarazione alla fine.
#
per la pagina dell'indice. Per alcuni dei miei collegamenti della barra di navigazione non voglio innescare un percorso verso il #
quale è ciò che accade se lo usi a href="#"
da solo. L'utilizzo <a href="#" onclick="return false;"
interrompe l'attivazione del percorso, ma l'evento click fa ancora bolle nel mio gestore (che utilizza gli eventi DOM collegati tramite jQuery e Backbone.Radio). Grazie @ shashwat13 :)