IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

script menu clique droit


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut script menu clique droit
    Bonjour,

    J'ai trouvé un script permettant de personnaliser le menu contextuel lors d'un clic droit de la souris.

    Il me semble bien, mais je voudrais l'adapter pour qu'il détecte l'élément sur le quel on clique...

    Voici le script que j'ai recupere

    dans la partie <head>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
     <script language="JavaScript">
    function affiche_menu() {
     
    // Détection de la position du clic (distance au bords droit et bas)
    var droite = document.body.clientWidth - event.clientX;
    var bas = document.body.clientHeight - event.clientY;
     
    // Si il n'y a pas la place à droite pour placer le menu
    if ( droite < menu.offsetWidth ) {
     
    // On place le menu à gauche de la souris
    menu.style.left = document.body.scrollLeft + event.clientX - menu.offsetWidth;
    }
     
    // Sinon, on le place à droite de la souris
    else {
    menu.style.left = document.body.scrollLeft + event.clientX;
    }
     
    // Pareil vis-à-vis du bas de l'ecran
    if ( bas < menu.offsetHeight ) {
    menu.style.top = document.body.scrollTop + event.clientY - menu.offsetHeight;
    }
    else {
    menu.style.top = document.body.scrollTop + event.clientY;
    }
     
    // Affichage proprement dit du menu
    menu.style.visibility = "visible";
    return false;
    }
     
     
    // Masquage du menu
    function masque_menu() {
    menu.style.visibility = "hidden";
    }
     
     
    // Surlignage des intitulés (position 'on')
    function surlignage() {
    if ( event.srcElement.className == "intitules" ) {
    event.srcElement.style.backgroundColor = "highlight";
    event.srcElement.style.color = "white";
    }
    }
     
     
    // Remise à l'état normal des intitulés (position 'off')
    function normal() {
    if ( event.srcElement.className == "intitules" ) {
    event.srcElement.style.backgroundColor = "";
    event.srcElement.style.color = "black";
    }
    }
     
     
    // Chargement des liens
    function aller() {
    if ( event.srcElement.className == "intitules" ) {
     
    // Vérification de la fenêtre cible pour le lien (nouvelle fenêtre...)
    if ( event.srcElement.getAttribute("target") != null ) {
    window.open(event.srcElement.url,event.srcElement.getAttribute("target"));
    }
    else {
    window.location = event.srcElement.url;
    }
    }
    }
    </script>
     
    <style>
    .fond {
    position: absolute;
    width: 200px;
    visibility: hidden;
    border: 2px;
    border-bottom-style : inset;
    border-right-style : inset;
    border-left-style : outset;
    border-top-style : outset;
    background-color: menu;
    font-family: Tahoma;
    line-height: 20px;
    font-size: 13px;
    }
     
    .intitules { padding-left: 15px; padding-right: 10px; }
    </style>
    dans la partie <body>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     <!-- Placez de préférence ceci au début de votre page -->
    <div id="menu" class="fond" onmouseover="surlignage()" onmouseout="normal()" onclick="aller()">
    <div class="intitules" url="javascript:history.go(-1)">Précédent</div>
    <div class="intitules" url="javascript:history.go(1)">Suivant</div>
    <div class="intitules" url="javascript:history.go(0)">Actualiser</div>
    <div class="intitules" url="javascript:window.print()">Imprimer</div>
    <hr>
    <div class="intitules" url="http://www.biblioscript.com/">Biblioscript</div>
    </div>
     
    <script language="javascript">
    <!-- Lancement de la détection des clics uniquement pour Internet Explorer -->
    if ( document.all) {
     
    // Sur clic-droit, affichage
    document.oncontextmenu = affiche_menu;
     
    // Sur clic gauche, masquage
    document.body.onclick = masque_menu;
    }
    </script>
    En fait ca s'applique à n'importe quel endroit du body.
    Hors dans mon code, j'ai plusieurs div dans mon body, et je voudrais agir sur le div où on a cliqué...
    Comment faire pour que ce script permette par exemple de modifer le background du div où on a cliqué?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    J'ai associé à l'evenement oncontextmenu de mes div la fonction affiche_menu() au lieu de dans le body, le menu apparait, mais le probleme c'est que le menu normal de IE apparait aussi...

    Comment faire pour désactiver le menu contextuel de IE?

Discussions similaires

  1. modifier menu clique droit sur bureau
    Par hl037 dans le forum KDE
    Réponses: 2
    Dernier message: 30/11/2012, 18h46
  2. [AIR] Creer menu (clique droit)
    Par scudhit dans le forum Flex
    Réponses: 9
    Dernier message: 04/11/2010, 16h34
  3. Ajout de menu perso sur clique droit de la souris !!
    Par Kyp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/12/2005, 17h06
  4. (Menu contextuel) Clique droit sur images
    Par Furius dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 02/10/2005, 20h21
  5. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo