2010-11-18 15 views
5

Mon projet repose sur JavaScript pour afficher dynamiquement le contenu sur un clic de lien hypertexte. Afin de le faire se dégrader proprement sans JavaScript activé, je montre simplement tout le contenu de la page et en utilisant des hyperliens et des ancres pour connecter les pièces.noscript à filtrer ajouter des liens hypertexte - Clean JavaScript dégradé

Je compte sur jQuery pour identifier le clic du lien hypertexte par ID, donc sans JavaScript j'ai besoin d'ajouter dans l'ancre.

Est-ce une bonne utilisation de noscript? Principalement, cela ajoutera-t-il toujours le lien hypertexte sans JavaScript?

<div id="link1"> 
    <noscript><a href="#link1content"></noscript> 
    1. Link Name Here 
    <noscript></a></noscript> 
</div> 

Répondre

5

éléments contiennent d'autres éléments , pas seulement les tags. L'étiquette de début et l'étiquette de fin doivent être dans le conteneur. Un validator aurait ramassé ça.

Vous ne devriez pas utiliser noscript pour cela en premier lieu cependant. Quelque chose de plus le long des lignes de:

<a class="enhanced_in_some_way" href="#link1content">1. Link Name Here</a> 

avec

jQuery('a.enhanced_in_some_way').click(function (event) { 
    var link = this; 
    var name = /#([^#]+$)/.exec(link.href); 
    do_something_with(name); 
    event.preventDefault(); 

}); 

... est probablement la voie à suivre.

0

Dans de nombreux navigateurs, cela fonctionnera, mais je ne le recommanderais pas. Il rompt complètement la structure du HTML et n'est pas garanti pour fonctionner dans tous les navigateurs ou même les futures versions des navigateurs dans lesquels il fonctionne actuellement.

0

En fait, vous n'avez pas besoin de noscript ici. Placez la destination d'ancrage dans les liens hypertexte par défaut, et dans votre jQuery ou javascript cliquez sur la fonction, terminer avec un return false ou event.preventDefault();. Cela empêchera le suivi du lien si JavaScript est activé et entraînera une ancre suivie si elle est désactivée. Vous êtes couvert dans les deux sens avec un minimum de frais généraux.