11544 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous et à toutes.

J'aimerais trouver un moyen d'afficher un menu lorsque je clique (avec le bouton droit de la souris) sur un lien de type
<a href=""></a>

Merci de votre aide
Modifié par ashesheart (10 Jul 2007 - 14:50)
Bonjour.

Le bouton droit est réservé au navigateur, c'est une très mauvaise idée de vouloir le changer d'ailleurs je ne sais même pas si cela est possible. Je serais toi je mettrais plutôt une image qui apparaît uniquement quand Javascript est activé et qui elle, déroule un menu.
Salut,

Il existe déjà un menu par défaut qui s'ouvre avec le clic droit de la souris sur un lien (ouvrir, ouvrir dans un nouvel onglet, marquer la page, enregistrer la cible du lien, etc.), et je ne pense pas qu'il soit vraiment une bonne chose pour le visiteur que d'interférer avec çà. Smiley cligne
C'est pour une application Intranet. Comme par exemple les applications mail de lotus note, quand on clique sur le bouton droit il y a un menu qui s'affiche pour pouvoir supprimer le mail, répondre, etc...

Moi je voudrais pouvoir faire un menu qui s'affiche lorsque je clique sur le bouton droit.
En regardant sur google j'ai trouver plein de site qui expliquer comment crée un menu avec un clique droit.

Ne sachant pas si on peut mettre un lien vers un autre site je te conseil de rechercher "click droit menu javascript" dans google et tu trouveras ton bonheur Smiley lol
Sur google je n'ai trouvé que des scripts qui faisaient apparaitre un menu quand on clique n'importe ou sur la page, moi je veux seulement quand on clique sur un lien.

Je viens pas sur un forum en demandant de l'aide si je n'ai pas cherché avant !
Bonjour,

Pour un intranet c'est jouable. S'assurer que tous les navigateurs qui vont y accéder :
- acceptent cette fonctionnalité,
- que javascript activé
- que le remplacement clic droit n'est pas désactivé (la désactivation est possible au moins dans Firefox), sinon gare aux engueulades de la part des utilisateurs et/ou de l'administrateur du parc de machines.

Penser aussi que les utilisateurs ne pourront pas utiliser le clic droit pour imprimer, sauvegarder la destination du lien, en cliquant droit sur ce lien.

La procédure est la suivante :
1. ajouter un gestionnaire sur l'évènement onclick, onmousedown ou onmouseup du lien
2. détecter dans le gestionnaire quel bouton a été cliqué en regardant les propriétés de l'évenement (bouton 2, dans une configuration windows classique).
3. afficher le menu
4. désactiver le comportement par défaut du lien (return false, et/ou preventDefault() )
Modérateur
Salut,

On n'est pas obligé d'empêcher l'apparition du menu habituel. On peut simplement faire apparaître un menu supplémentaire.

Exemple :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />

		<title>Exemple</title>

		<script type="text/javascript"><!--

function init()
{
	var oA = document.getElementsByTagName('a')[0];

	oA.oncontextmenu = function() { alert('coucou'); };
}

window.onload = init;

		//--></script>
	</head>
	<body>

<p><a href="#">lien</a></p>

	</body>
</html>
Il n'y a qu'à remplacer l'alerte par un menu... Smiley smile
Modifié par koala64 (10 Jul 2007 - 14:39)
Merci pour ton aide Lanza. En revanche je touche pas des masses en javascript. Serait il possible que tu me donne un début de piste.
Parce que la théorie je l'avais aussi, par contre la pratique c'est pas aussi simple surtout dans mon exemple :

- Tu as une liste de liens
- Chaque lien possede un id
- Et quand je cliquerai sur un lien (parmi la liste de liens) je devrais récupérer l'id ou j'ai cliqué.

Par exemple j'ai une liste de voitures. et quand je clique sur le bouton droit de chaque voiture, je dois pouvoir supprimer cette voiture.

Vous me suivez??? Smiley sweatdrop
Ok merci Koala je vais tester ça !

Edit: ta fonction marche, merci Koala, je vais quand meme me débrouiller pour le reste et essayer de bloquer le clic droit.
Modifié par ashesheart (10 Jul 2007 - 14:45)
Modérateur
ben dans ce cas, tu rajoutes un return false après l'alerte... Au moins, tu conserveras le menu droit normal lorsqu'on cliquera sur la page... (mais pas lorsqu'on cliquera sur le lien)
Modifié par koala64 (10 Jul 2007 - 14:48)
D'accord merci Koala, je pensais que c'était plus compliqué que ça. C'est puissant un return false Smiley biggrin .

Merci a tous pour votre aide. Je pensais pas trouver la solution aussi rapide aprés avoir passé des heures a chercher sur internet.

A bientôt pour de nouvelles aventures!!
oncontextmenu, mertalors. on me dit jamais rien à moi.
Merci koala64, c'est beaucoup solide que le clic droit, ça. Sauf que ça a pas l'air d'être normalisé,.
Modifié par Lanza (10 Jul 2007 - 14:59)
ashesheart a écrit :
Lanza, comment tu sais que c'est pas normalisé?

Parce que ce n'est dans aucune spécification ? Smiley cligne

Etant donné que c'est un type d'événement spécifique à un périphérique (la souris), qui empiète sur les responsabilités du navigateur, il y a peu de chance que ce soit normalisé un jour.
Si ça l'était, ce serait dans la liste des évenements dans la spécification du DOM (anglais) ou HTML 4.01 (anglais aussi).

En fait ça ressemble à un évènement inventé par Microsoft (Voir la doc MSDN à ce sujet, encore en anglais) et repris par Mozilla, voire d'autres.

Julien Royer a écrit :

Etant donné que c'est un type d'événement spécifique à un périphérique (la souris), qui empiète sur les responsabilités du navigateur, il y a peu de chance que ce soit normalisé un jour.


Ben non justement. C'est la demande du menu contextuel qui déclenche l'évènement ici, pas spécifiquement le bouton droit. Ce qui est beaucoup plus interessant, puisque ça doit marcher même sur mac avec un ctrl + clic, ou sous mon Linux avec la touche menu.

Et les évènements spécifiques à la souris sont normalisés, eux, justement.
Modifié par Lanza (10 Jul 2007 - 15:20)
Lanza a écrit :
Ben non justement. C'est la demande du menu contextuel qui déclenche l'évènement ici, pas spécifiquement le bouton droit. Ce qui est beaucoup plus interessant, puisque ça doit marcher même sur mac avec un ctrl + clic, ou sous mon Linux avec la touche menu.

C'est vrai.

Mais est-il possible de déclencher le menu contextuel sous Windows à partir du clavier ?
Lanza a écrit :
Et les évènements spécifiques à la souris sont normalisés, eux, justement.

Mais eux n'empiètent pas forcément sur les responsabilités du navigateur...
Julien Royer a écrit :

C'est vrai.

Mais est-il possible de déclencher le menu contextuel sous Windows à partir du clavier ?.
Oui, il y'a une touche prévue à cet effet + une combinaison de touches qui produit la même chose probablement.
Shinuza a écrit :
Oui, il y'a une touche prévue à cet effet + une combinaison de touches qui produit la même chose probablement.

Ah oui c'est vrai, j'avoue que je ne m'en sers jamais.