Noscript to Filter Add Add Hyperlinks - Limpe JavaScript Degrade
-
26-09-2019 - |
Pergunta
Meu projeto conta com JavaScript para exibir dinamicamente o conteúdo em um clique de hiperlink. Para torná -lo degradado de forma limpa sem o JavaScript ativado, estou simplesmente mostrando todo o conteúdo da página e usando hiperlinks e âncoras para conectar as peças.
Estou confiando no jQuery para identificar o clique do hiperlink por ID; portanto, sem JavaScript, preciso adicionar a âncora.
Este é um bom uso do Noscript? Principalmente, isso sempre adicionará o hiperlink sem JavaScript?
<div id="link1">
<noscript><a href="#link1content"></noscript>
1. Link Name Here
<noscript></a></noscript>
</div>
Solução
Os elementos contêm outros elementos, não apenas tags. A tag de início e a etiqueta final devem estar no contêiner. UMA validador teria pegado isso.
Você não deveria estar usando o Noscript para isso em primeiro lugar. Algo mais parecido com:
<a class="enhanced_in_some_way" href="#link1content">1. Link Name Here</a>
com
jQuery('a.enhanced_in_some_way').click(function (event) {
var link = this;
var name = /#([^#]+$)/.exec(link.href);
do_something_with(name);
event.preventDefault();
});
... é provavelmente o caminho a seguir.
Outras dicas
Em muitos navegadores, isso funcionará, mas eu não recomendaria. Ele quebra completamente a estrutura do HTML e não é garantido que funcione em todos os navegadores ou mesmo versões futuras dos navegadores em que funciona agora.
Na verdade, você não precisa de Noscript aqui. Coloque o destino âncora nos hiperlinks por padrão e na função JQuery ou JavaScript, termine com um return false
ou event.preventDefault();
. Isso impedirá que o link seja seguido se o JavaScript estiver ativado e resultará em uma âncora seguida se estiver desativada. Você é coberto nos dois sentidos com o mínimo de sobrecarga.