<a href="javascript:void(0)" id="loginlink">login</a>
Ho visto molte volte questi href
, ma non so cosa significhi esattamente.
L'operatore void
valuta l'espressione data
espressione e poi restituisce undefined
.
L'operatore
void
è spesso usato semplicemente per ottenere la primitivaundefined
. valore, di solito usando "void(0)
" (che è equivalente a "void 0
"). In questi casi, la variabile globaleundefined
può essere usata al suo posto (assumendo che non sia non sia stata assegnata ad un valore non predefinito valore).
Una spiegazione è fornita qui: operatore void
.
La ragione per cui vorresti fare questo con il href
di un link è che normalmente, un URL javascript:
reindirizzerà il browser a una versione di testo semplice del risultato della valutazione di quel JavaScript. Ma se il risultato è undefined
, allora il browser rimane sulla stessa pagina. void(0)
è solo un breve e semplice script che valuta a undefined
.
Significa che non farà nulla. È un tentativo di far sì che il link non "navighi" da nessuna parte. Ma non è il modo giusto.
Dovresti semplicemente "restituire false" nell'evento onclick
, così:
<a href="#" onclick="return false;">hello</a>
Tipicamente è usato se il link sta facendo qualche cosa di 'JavaScript-y'. Come postare un modulo AJAX, o scambiare un'immagine, o altro. In questo caso si fa in modo che qualsiasi funzione venga chiamata restituisca false
.
Per rendere il tuo sito completamente fantastico, comunque, generalmente includerai un link che fa la stessa azione, se la persona che lo naviga sceglie di non eseguire JavaScript.
<a href="backup_page_displaying_image.aspx"
onclick="return coolImageDisplayFunction();">hello</a>
Dovresti sempre avere un href sui tuoi tag a. Chiamare una funzione JavaScript che restituisce 'undefined' andrà benissimo. Anche il collegamento a '#'.
I tag di ancoraggio in Internet Explorer 6 senza un href non ottengono lo stile a:hover
applicato.
Sì, è terribile e un piccolo crimine contro l'umanità, ma anche Internet Explorer 6 in generale.
Spero che questo aiuti.
Internet Explorer 6 è effettivamente un grande crimine contro l'umanità.