11544 sujets
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() )
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() )
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 :
Modifié par koala64 (10 Jul 2007 - 14:39)
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... 
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???
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???

ashesheart a écrit :
Lanza, comment tu sais que c'est pas normalisé?
Parce que ce n'est dans aucune spécification ?

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.
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)
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...