Um link deve ter um destino HREF a ser especificado para permitir que ele seja um objeto de exibição utilizável.
A maioria dos navegadores não analisa o JavaScript avançado em um
<A HREF=""
tag como:
<A href="JavaScript:var elem = document.getElementById('foo');"
porque a tag HREF na maioria dos navegadores não permite espaços em branco ou converte espaços em branco em% 20, o HEX equivalente de um ESPAÇO, que torna seu JavaScript absolutamente inútil para o intérprete.
Portanto, se você deseja usar uma tag A HREF para executar o JavaScript embutido, especifique um valor válido para o HREF PRIMEIRO que não seja muito complexo (não contenha espaço em branco) e forneça o JavaScript em uma tag de atributo de evento como OnClick , OnMouseOver, OnMouseOut, etc.
A resposta típica é fazer algo assim:
<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>
Isso funciona bem, mas faz com que a página pule para o topo devido ao sinal de cerquilha / tag de hash diz para isso.
O simples fornecimento de uma marca de sinal / hash em uma marca A HREF na verdade especifica a âncora raiz, que é sempre, por padrão, a parte superior da página, você pode especificar um local diferente usando o atributo NAME dentro de uma marca A HREF.
<A NAME='middleofpage'></A>
Você pode alterar sua tag A HREF para ir para 'middleofpage' e executar o JavaScript no evento OnClick, uma vez que isso acontece da seguinte forma:
<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>
Haverá MUITAS vezes em que você não deseja que o link salte, para que você possa fazer duas coisas:
<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>
Agora ele não vai a lugar nenhum quando clicado, mas pode fazer com que a página se centralize novamente a partir da janela de exibição atual. Isso não é bonito. Qual é a melhor maneira de fornecer javascript in-line, usando um A HREF, mas sem ter que fazer nenhuma das opções acima? JavaScript: vazio (0);
<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>
Isso indica ao navegador para ir a lugar nenhum, mas, em vez disso, execute o JavaScript válido: void (0); funcione primeiro na tag HREF porque não contém espaços em branco e não será analisado como um URL. Em vez disso, ele será executado pelo compilador. VOID é uma palavra-chave que, quando fornecida com um parâmetro de 0, retorna UNDEFINED, que não utiliza mais recursos para manipular um valor de retorno que ocorreria sem especificar o 0 (é mais favorável ao gerenciamento de memória / desempenho).
A próxima coisa que acontece é que o OnClick é executado. A página não se move, nada acontece em termos de exibição.
javascript:
é um dos muitos esquemas de URI: en.wikipedia.org/wiki/URI_scheme , comodata:
.