11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je fabrique un site sous joomla 1.5.
Je souhaite qu'une ancre - toujours la même - soit ajoutée à tous les liens du site.

Exemple rapide et concret :

Mon lien 1 : <a href="monbeaulien1.html></a>
Mon lien 2 : <a href="monbeaulien2.html></a>

Résultat :
<a href="monbeaulien1.html#ancreunique></a>
<a href="monbeaulien2.html#ancreunique></a>

Je cumule un nombre d'heure incalculable pour trouver cette bidouille, j'ai tenté des "trucs" avec Jquery à partir de bout de code, mais le javascript et moi, c'est comme l'huile et l'eau.

J'accepte volontier de l'aide. Merci
Hello,

Ben simplement tu peux faire ça :

// Lorsque le DOM est chargé
jQuery(function ($) {


	// Pour avoir une ancre différente sur chaque lien	
	$("a").each(function(index){
		var lien = $(this).attr('href');
		var ancre = "#ancre_"+(index+1);
		$(this).attr('href',lien+ancre);
	});
	
	// Pour avoir la même ancre sur chaque lien	
	$("a").each(function(index){
		var lien = $(this).attr('href');
		var ancre = "#ancre_unique");
		$(this).attr('href',lien+ancre);
	});
	
	
});


Mais bon, il doit bien y avoir sous Joomla un moyen de modifier les liens à la volée sans avoir à repasser par du js derrière.
Hello,

Je dois rater quelque chose, ça ne fonctionne pas...

Je fais appel à la librairie Jquery dans mon head

<script src="http://code.jquery.com/jquery-latest.js"></script>

Puis, je lance la fonction
<script type="text/javascript">
jQuery(function ($) {
// Pour avoir la même ancre sur chaque lien         
	   $("a").each(function(index){
		   var lien = $(this).attr('href');
		   var ancre = "#ancre_unique"); 
	   $(this).attr('href',lien+ancre);
		   });           

</script>

Je pose 2 liens exemples, mais aucun d'entre eux ne se voit suivi de #ancre_unique au moment de l'ouverture.

J'ai ouvert Dreamweaver (oui je sais...) et il annonce une erreur de syntaxe qui se situerait selon lui ici :
	   var ancre = "#ancre_unique"); 

En tout cas et dans le désordre, un grand merci pour ta réponse Smiley cligne
Remince, en enlevant la parenthèse, ça ne fonctionne pas et Dreamweaver annonce toujours une erreur de syntaxe.
J'ai beau regardé dans tous les sens mais je ne la vois pas. (Cécité ?) Smiley ravi
Je continue de chercher...
Ca y est ! Je viens de trouver ! Il fallait ajouter un "truc" de fermeture en plus
});

Je mets le code complet tout propre pour ceux qui seraient intéressés
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript"> 
jQuery(function ($) { 
// Pour avoir la même ancre sur chaque lien          
       $("a").each(function(index){ 
           var lien = $(this).attr('href'); 
           var ancre = "#ancre_unique";
       $(this).attr('href',lien+ancre); 
           });    });
</script>

Merci merci beaucoup !!!
Hum... Encore une question - et je pense que c'est la dernière... Heu, je cherche l'antidote à présent. Smiley smile
Si mon lien est
<a href="monlien.html#ancre-unique></a>
comment faire pour qu'il devienne
<a href="monlien.html></a>

A partir de ta fonction, j'ai remplacé + par -, mais ça ne l'a pas fait...
<script type="text/javascript">  
jQuery(function ($) 
{         
       $("a").each(function(index){  
           var lien = $(this).attr('href').split('#');
           $(this).attr('href',lien[0]);  
       });    
}); 
</script>
Hello,

Désolé pour la parenthèse en trop à la fin de la déclaration de la variable. Sinon le "truc" en plus était déjà présent dans mon code…

Bref, pour éviter de te prendre la tête avec Dreamweaver et donc pour savoir d'où viennent la ou les erreurs de scripts, je t'invite à installer (si tu bosses avec Firefox) les extensions "Web Developer", "Firebug", et "FireQuery".
Si tu bosses avec Chrome ou Safari (ou Webkit), tu as aussi une console d'inspection dans les deux (il faut l'activer dans Safari, dans Chrome je sais plus) similaire à Firebug.
Veuillez excuser ma curiosité mais qu'elle est le but de l'ajout de cette ancre sur tous les liens ? Smiley murf
Bonjour tout le monde,

Pardon pour ce retard dans le suivi.

lddsoft, j'ai essayé
var ancre = "";
mais sans succès.

ZeB_panam, il manquait FireQuery a ma panoplie. Merci pour l'info. Je m'occupe de savoir comment il fonctionne...

yodaswii, ma page est composée comme suit :
- un menu en haut et un slider visible sur toutes les pages : 500px de hauteur
- une partie article
- un footer.

Mettre une ancre à la "partie article" permet à l'utilisateur de ne pas à avoir à scroller vers le bas pour voir l'article.
Générer l'ancre en javascript me permet de ne pas soumettre des urls avec des ancres à google car je ne trouve pas ça très sexy Smiley cligne

Et maintenant, mon besoin est de les supprimer ponctuellement, notamment pour utiliser un module de "partage social" (facebook, tweeter, etc.) qui se perd avec ces liens "ancrés".
L'idée fonctionne niquel, il manque juste le bout de code correct.

Voilà.