Um de nossos desenvolvedores da Web usa o seguinte html como espaço reservado para criar uma lista suspensa.
<a href="" class="arrow"></a>
Essa tag âncora considerada é válida?
Como não há valor href, ele aparece como quebrado em alguns de nossos relatórios do verificador de link.
Respostas:
Embora essa pergunta já esteja respondida ( tl; dr: sim, um
href
valor vazio é válido), nenhuma das respostas existentes faz referência às especificações relevantes.Uma cadeia vazia não pode ser um URI. No entanto, o
href
atributo não leva apenas URIs como valor, mas também referências a URI. Uma cadeia vazia pode ser uma referência de URI.HTML 4.01
O HTML 4.01 usa o RFC 2396 , onde diz a seção 4.2. Referências no mesmo documento (ênfase em negrito):
O RFC 2396 está obsoleto pelo RFC 3986 (atualmente o padrão URI da IETF ), que diz essencialmente o mesmo .
HTML5
O HTML5 usa ( URL válido potencialmente cercado por espaços → URL válido ) a especificação de URL do W3C , que foi descontinuada. Padrão de URL do WHATWG deve ser usado (consulte a última seção).
HTML 5.1
Utilizações do HTML 5.1 ( URL válido potencialmente cercado por espaços → URL válido ) Padrão de URL do WHATWG (consulte a próxima seção).
WHATWG HTML
O HTML do WHATWG usa ( URL válido potencialmente cercado por espaços ) a definição de string de URL válida do URL Standard do WHATWG , onde diz que pode ser uma string de URL relativa com fragmento , que deve pelo menos ser uma string de URL relativa , que pode ser uma sequência de caminho relativo ao esquema sem URL , que é uma sequência de caminho relativo à URL que não começa com uma sequência de esquema seguida por
:
, e sua definição diz (ênfase em negrito):fonte
Isso é válido.
No entanto, a prática padrão é usar
href="#"
ou algumas vezeshref="javascript:;"
.fonte
href="#"
, foco se move para cima da página no IE, então eu thkinkhref="javascript:;"
é melhorComo outros já disseram, é válido.
Existem algumas desvantagens em cada abordagem:
href="#"
adiciona uma entrada extra ao histórico do navegador (que é irritante quando, por exemplo, é pressionado novamente).href=""
recarrega a páginahref="javascript:;"
parece não ter nenhum problema (além de parecer bagunçado e sem sentido) - alguém sabe de algum?fonte
Embora possa ser um HTML completamente válido para não incluir um href, especialmente com um manipulador onclick, há algumas coisas a considerar: ele não será focado no teclado sem ter um valor tabindex definido. Além disso, isso será inacessível ao software de leitura de tela usando o Internet Explorer, pois o IE relatará através das interfaces de acessibilidade que qualquer elemento âncora sem um atributo href não pode ser focalizado, independentemente de o índice de tabulação ter sido definido.
Portanto, embora o seguinte possa ser completamente válido:
É muito melhor adicionar explicitamente um atributo href de efeito nulo
Para suporte total de todos os usuários, se você estiver usando a classe com CSS para renderizar uma imagem, inclua também algum conteúdo de texto, como o atributo title, para fornecer uma descrição textual do que está acontecendo.
fonte
href
interferirá nas interfaces de acessibilidade.href
valor para qualquer coisa que não seja um caminho relativo / absoluto causará problemas no leitor de tela. Evite usar um símbolo de hash / libra como solução alternativa para esse problema, pois não se destina a isso. Os leitores de tela podem (atualmente o VoiceOver o faz) anunciar que seu link é um identificador de fragmento (link para algum lugar da página atual) e também é válido do ponto de vista dos padrões. veja w3.org/2001/tag/2011/01/HashInURI-20110115#NakedHashO rascunho atual do HTML5 também permite omitir completamente o atributo href.
Para responder sua pergunta: Sim, é válido.
fonte
<a>
elemento semhref
é denominado diretamente em alguns navegadores. Por exemplo, ": hover" estilos não funcionam no Chrome (e outras coisas estranhas)<a>
tag sem ahref
representa outra coisa , não um link (tradicionalmente uma âncora). Além disso, há uma diferença entre um atributo opcional e um atributo que pode estar vazio.Na verdade, você pode deixá-lo em branco (o validador W3 não reclama).
Levando a idéia um passo adiante: deixe de fora o = "". A vantagem disso é que o link não é tratado como uma âncora para a página atual.
fonte
<a href></a>
→ Atributo href sem um valor explícito visto. O atributo pode ser descartado pelo IE7.Enquanto o validador do W3 não pode reclamar de um
href
atributo vazio , o rascunho de trabalho atual do HTML5 especifica:Um URL válido é um URL que está em conformidade com o URL Standard . Agora, o URL Standard é um pouco confuso para entender, no entanto, em nenhum lugar ele afirma que um URL pode ser uma string vazia.
... o que significa que uma string vazia não é uma URL válida.
O rascunho de trabalho do HTML5 continua, no entanto, declarando:
Isso significa que podemos simplesmente omitir
href
completamente o atributo:Se sua intenção é que esses elementos
href
-lessa
ainda exijam a interação do teclado, você precisará seguir a rota normal de atribuição de umrole
etabindex
ao lado dos manipuladores de cliques / teclas pressionados:fonte
href
torna um hiperlink, o que torna aonclick
funcionalidade inacessível aos usuários do teclado.Uma palavra de cautela:
Na minha experiência, omitir o
href
atributo causa problemas de acessibilidade, pois a navegação do teclado o ignorará e nunca dará foco como quando o href estiver presente. A inclusão manual de seu elemento no índice de tabulação é uma maneira de contornar isso.fonte
é válido, mas como o UpTheCreek disse: 'Há algumas desvantagens em cada abordagem'
se você estiver chamando ajax através de uma tag, deixe o href = "" assim manterá a página recarregando e o código ajax nunca será chamado ...
acabei de receber esse pensamento seria bom compartilhar
fonte
Tente fazer o
<a href="#" class="arrow">
contrário. (Observe o#
caractere nítido ).fonte