MENU CONTEXTUEL CLICK DROIT AMELIORE

cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007 - 30 oct. 2003 à 20:02
cs_foxmaster Messages postés 38 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2013 - 17 oct. 2007 à 10:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17534-menu-contextuel-click-droit-ameliore

cs_foxmaster Messages postés 38 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2013
17 oct. 2007 à 10:40
Aprés quelques recherches j'ai trouvé le moyen de rendre ce menu compatible firefox voici les modif que j'ai apportées:

<html><head>
<style>
#menuC {
color:#0080ff;
background-color:#000000;
position:absolute;
left:-395px;
top:-395px;
width:12em;
border: 5px outset green;
line-height:0.9em;
cursor:default;
}
#menuC a {
color:#0080ff;
font-size:15px;
font-family:Times New Roman,Arial;
font-weight:bold;
padding-left:15px;
padding-right:15px;
cursor:hand;
}
#menuC a:hover {
color:#ffffff;
font-size:15px;
font-family:Times New Roman,Arial;
font-weight:bold;
padding-left:15px;
padding-right:15px;
cursor:hand;
}
</style>
<script language="JavaScript">
// Le sommaire : Début
var menuC;
var menuCStyle;
var ie=0;
function showmenuC(e){ // Place le sommaire et l'affiche à l'écran
if (ie==1)
{
var cX (navigator.appName.substring(0,3) "Net") ? e.pageX : event.clientX;
var cY (navigator.appName.substring(0,3) "Net") ? e.pageY : event.clientY;
var rightedge= document.body.clientWidth-cX;
var bottomedge= document.body.clientHeight-cY;
if (rightedge>menuC.offsetWidth) {menuCStyle.left=document.body.scrollLeft+cX;}
else {menuCStyle.left=document.body.scrollLeft+cX-menuC.offsetWidth;}
if (document.body.scrollLeft>document.body.scrollLeft+cX-menuC.offsetWidth && rightedge<menuC.offsetWidth)
{menuCStyle.left=document.body.scrollLeft;}
if (bottomedge>menuC.offsetHeight) {menuCStyle.top=document.body.scrollTop+cY;}
else {menuCStyle.top=document.body.scrollTop+cY-menuC.offsetHeight;}
if (document.body.scrollTop>document.body.scrollTop+cY-menuC.offsetHeight && bottomedge<menuC.offsetHeight)
{menuCStyle.top=document.body.scrollTop;}
menuCStyle.visibility="visible";
return false;
}
else
{
if (e.button==2||e.button==3)
{
var cX (navigator.appName.substring(0,3) "Net") ? e.pageX : event.clientX;
var cY (navigator.appName.substring(0,3) "Net") ? e.pageY : event.clientY;
var rightedge= document.body.clientWidth-cX;
var bottomedge= document.body.clientHeight-cY;
if (rightedge>menuC.offsetWidth) {menuCStyle.left=document.body.scrollLeft+cX;}
else {menuCStyle.left=document.body.scrollLeft+cX-menuC.offsetWidth;}
if (document.body.scrollLeft>document.body.scrollLeft+cX-menuC.offsetWidth && rightedge<menuC.offsetWidth)
{menuCStyle.left=document.body.scrollLeft;}
if (bottomedge>menuC.offsetHeight) {menuCStyle.top=document.body.scrollTop+cY;}
else {menuCStyle.top=document.body.scrollTop+cY-menuC.offsetHeight;}
if (document.body.scrollTop>document.body.scrollTop+cY-menuC.offsetHeight && bottomedge<menuC.offsetHeight)
{menuCStyle.top=document.body.scrollTop;}
menuCStyle.visibility="visible";
return false;
}
else
{
hidemenuC();
}
}
}
function hidemenuC(){menuCStyle.visibility="hidden";} // Cache le sommaire.
if (navigator.appName.substring(0,3) == "Net") document.captureEvents(Event.MOUSEMOVE);

// Le sommaire : Fin
</script>
</head>



[liens1.html Liens 1]

[liens2.html Liens 2]
<hr size="1" noshade />
[liens3.html Liens 3]


<script language="JavaScript">

if (document.all) // for IE
{
ie=1;
document.oncontextmenu=showmenuC;
document.onclick=hidemenuC;

}
else // for FF
{
document.onclick=showmenuC;
}
menuC=document.getElementById("menuC");
menuCStyle=document.getElementById("menuC").style;
</script>
</html>

je n'ai pas réussi a simplifier d'avantage... mais de cette façon cela fonctionne sous IE et firefox!(testé avec les versions 1.5.0.12 et 2.0.0.7)
cs_foxmaster Messages postés 38 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 23 septembre 2013
17 oct. 2007 à 09:09
Bonjour,
je viens de tester cette source qui est vraiment sympa sauf que ... ça marche pas bien sous firefox :-( le click droit fait également afficher le menu contextuel de firefox... quelqu'un saurait t'il comment éviter cela ?
Merci d'avance.
sagat06 Messages postés 166 Date d'inscription mercredi 27 juin 2007 Statut Membre Dernière intervention 31 mars 2014 1
12 sept. 2007 à 16:38
Tout d'abord, je tiens à feliciter FlashFun pour ce script qui me permet d'éviter de longues heures d'agonie.
Ensuite, le script modifié permettant de faire apparaître le menu contextuel sur l'elt. de son choix fonctionne presque parfaitement.
En effet, j'ai voulu le tester avec une image et en cliquant sur celle-ci le menu est apparu mais sous l'image!!
En essayant de jouer avec les Zindex, je n'ai pas réussi à le faire apparaitre dessus.
De plus, débutant en javascript, j'ai lu que la fonction "oncontextmenu" était spécifique à IE et que les autres navigateurs ne le comprenaient pas => question : la modif' avec le 'oncontextmenu="showmenuC();return false;"' inséré dans l'elt. fonctionnera t-elle avec les autres navigateurs??

Bref si qq'un pouvait m'éclairer, j'en serai très reconnaissant.
Merci d'avance et pardonnez moi mes faiblesses, je débute..
Bob33000 Messages postés 1 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 25 juillet 2006
25 juil. 2006 à 00:25
Le script marche cependant si on change l'entête <html> par ceci
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
le script ne fonctionne plus, il est à remarquer que ce bug ce reproduit sur beaucoup des scripts proposés sur ce site.

Quel peux en être l'origine et comment corriger cela ?
aslihan Messages postés 3 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 30 décembre 2005
30 déc. 2005 à 15:50
çà marche.
Merci beaucoup!!
Afficher les 14 commentaires