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 :

Menu Contextuel JS/HTML


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de Biboude
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2017
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 30
    Par d�faut Menu Contextuel JS/HTML
    Hello ! J�ai une question � propos des menus Contextuels.
    J�explique j�ai d�j� mis en place le menu etc. (il marche) ... et cr�e mes fonctions.

    Mon probl�me est que quand lorsque je vais cliquer sur l'une de mes rubrique, rien ne se passe.
    Actuellement j�essaie d�appeler mes fonctions via un onclick mais �a ne fonctionne pas (Je sais c'est moche).

    J�ai cherch� sur l'internet mais je pense qu�il y a quelque chose qui m��chappe avec l�appel des fonctions (Je tien a pr�cis� que mes fonction marche s�par�ment) .
    Je donne l�extrait de code. H�site pas !


    Mon HTML

    Code HTML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    <!-- Menu Contextuel -->         <div id="menuData" style="display: none;">
                <div id="m1" text="File">
     
                    <div id="m11" onclick="cut()" style="cursor: pointer;" text="Cut" img="cut.gif" imgdis="cut_dis.gif" ><hotkey>Ctrl+X</hotkey></div>  
                    <div id="ms1" type="separator"></div> 
                    <div id="m12" onclick="copy()" style="cursor: pointer;" text="Copy"  img="copy.gif" imgdis="copy_dis.gif"><hotkey>Ctrl+C</hotkey> </div> 
                    <div id="m13" onclick="paste()" style="cursor: pointer;" text="Paste" img="paste.gif" mgdis="paste_dis.gif"><hotkey>Ctrl+V</hotkey></div>
     
                </div>
            </div>
    <!---------------->

    Mon JS

    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
    92
    93
    94
    95
    96
     
    //#region MENUX JavaScript
     
        var menu = new dhtmlXMenuObject();
        menu.setIconsPath("./Scripts/codebase/imgs/");
        menu.renderAsContextMenu();
        //menu.loadStruct("./Scripts/codebase/dhxmenu.xml?e=" + new Date().getTime());
        menu.loadFromHTML("menuData", true);
        var event_id, cb_date, cb_isCopy, cb_section = null;
     
        scheduler.attachEvent("onContextMenu", function (event_id_loc, native_event_object) {
            event_id = event_id_loc;
            cb_date = scheduler.getActionData(native_event_object).date;
            cb_section = scheduler.getActionData(native_event_object).section;
     
            /* Menu position */
            var posx = 0;
            var posy = 0;
            if (native_event_object.pageX || native_event_object.pageY) {
                posx = native_event_object.pageX;
                posy = native_event_object.pageY;
            } else if (native_event_object.clientX || native_event_object.clientY) {
                posx = native_event_object.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
                posy = native_event_object.clientY + document.body.scrollTop + document.documentElement.scrollTop;
            }
     
            //#region function Menu contextuel
            function copy2() { alert("koko"); }
     
            function copy() {
                scheduler._buffer_id = event_id;
                cb_isCopy = true;
                scheduler.callEvent("onEventCopied", [scheduler.getEvent(event_id)]);
            }
     
            function cut() {
                scheduler._buffer_id = event_id;
                cb_isCopy = false;
                scheduler.callEvent("onEventCut", [scheduler.getEvent(event_id)]);
            }
     
            function paste() {
                var ev = scheduler.getEvent(scheduler._buffer_id);
                if (ev) {
                    if (cb_isCopy) { // copy-paste
                        new_ev = _cb_make_paste_event(ev);
                        new_ev.id = scheduler.uid();
     
                        scheduler.addEvent(new_ev);
                        scheduler.callEvent("onEventPasted", [cb_isCopy, new_ev, ev]);
                    } else { // cut-paste
                        new_ev = _cb_make_paste_event(ev);
     
                        var a = scheduler.callEvent("onBeforeEventChanged", [new_ev, null, !1, ev]);
                        a && (scheduler.addEvent(new_ev), scheduler.callEvent("onEventPasted", [cb_isCopy, new_ev, ev]));
                    }
                }
            }
     
            function _cb_make_paste_event(ev) {
                var event_duration = ev.end_date - ev.start_date;
                var new_ev = scheduler._lame_copy({}, ev);
                new_ev.start_date = new Date(cb_date);
                new_ev.end_date = new Date(new_ev.start_date.valueOf() + event_duration);
     
                if (cb_section) {
                    var a = scheduler.getState().mode, d = null;
                    scheduler.matrix[a] ? d = scheduler.matrix[a].y_property : scheduler._props[a] && (d = scheduler._props[a].property), new_ev[d] = cb_section;
                }
                return new_ev;
            }
            //#endregion 
     
            /* Menu items */
            if (event_id) {
                menu.showItem("m11");
                menu.showItem("ms1");
                menu.showItem("m12");
                menu.showItem("demo");
                menu.hideItem("m13");
                menu.hideItem("ms2");
                menu.showContextMenu(posx, posy);
            }
            else {
                menu.hideItem("m11");
                menu.hideItem("m12");
                menu.showItem("m13");
                menu.showItem("demo");
                menu.hideItem("ms1");
                menu.hideItem("ms2");
                menu.showContextMenu(posx, posy);
            }
     
            return false; // Désactive le menu de base    });
     
        //#endregion
    J'ai oubli� de pr�cis�, que j'utilise la biblioth�que DHTMLX Je g�re des �vents que je voudrais copi� coll� avec mon nouveau menu !

  2. #2
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre averti Avatar de Biboude
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2017
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 30
    Par d�faut
    Bonjour et merci de ce retour, mais dans ton lien ils utilisent les balises <menu> et <menuItem> or c'est balise ne son compatible qu'avec Firefox 9.0 ou 8. (c'est pas ce que je veux)

    Ce que je voudrais c'est savoir comment associ� mes fonction avec mais click dans mon menu.

    Comment �a marche quoi ! comment c'est foutue est qu'elle est la logique.

  4. #4
    Membre averti Avatar de Biboude
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2017
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 30
    Par d�faut
    Bon je bloque toujours sur mon menu qui ne fais rien quand je clique sur mes rubrique . Grrr ...

    Voici le HTML donc j'ai un menu avec une rubrique File dedans j'ai trois autre div avec une cut une copy et une paste

    Code HTML : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <!-- Menu Contextuel -->
        <div id="menuData" style="display: none;">
            <div id="m1" text="File">
                // the first top menu item
                <div id="m11" text="Cut" img="cut.gif" imgdis="cut_dis.gif" onclick="cut();"><hotkey>Ctrl+X</hotkey></div>  //the first child item
                <div id="ms1" type="separator"></div> // a separator
                <div id="m12" text="Copy" img="copy.gif" imgdis="copy_dis.gif" onclick="TEST();"><hotkey>Ctrl+C</hotkey> </div> //the second child item
                <div id="m13" text="Paste" img="paste.gif" imgdis="paste_dis.gif" onclick="paste();"><hotkey>Ctrl+V</hotkey></div> //the third child item
            </div>
        </div>
        <!---------------->

    Pour ce qui est du JS

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    var menu = new dhtmlXMenuObject(); // Création de l'objet Menu
        menu.setIconsPath("./Scripts/codebase/imgs/"); // Charge imgs
        menu.renderAsContextMenu();
        //menu.loadStruct("./Scripts/codebase/dhxmenu.xml?e=" + new Date().getTime()); // Load structure Menu XML file
        menu.loadFromHTML("menuData", true); // Load HTML Structure    
        var event_id, cb_date, cb_isCopy, cb_section = null;
    l� j'initialise mon menu. Bon jusque l� �a va

    Apr�s j'attache l'�v�nement a mon Scheduler donc quand je vais faire click droit il va m'affich� mon menu

    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
    scheduler.attachEvent("onContextMenu", function (event_id_loc, native_event_object) { // appel du Menu context
            event_id = event_id_loc;
            cb_date = scheduler.getActionData(native_event_object).date;
            cb_section = scheduler.getActionData(native_event_object).section;
     
     
            /* Menu position */
            var posx = 0;
            var posy = 0;
            if (native_event_object.pageX || native_event_object.pageY) {
                posx = native_event_object.pageX;
                posy = native_event_object.pageY;
            } else if (native_event_object.clientX || native_event_object.clientY) {
                posx = native_event_object.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
                posy = native_event_object.clientY + document.body.scrollTop + document.documentElement.scrollTop;
            }
    Ici je vais donn� la logique d'affichage de mes rubrique

    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
    /* Menu items */
            if (event_id) {
                menu.showItem("m11");
                menu.showItem("ms1");
                menu.showItem("m12");
                menu.hideItem("m13");
                menu.hideItem("ms2");
                menu.showContextMenu(posx, posy);            
            }
            else {
                menu.hideItem("m11");
                menu.hideItem("m12");
                menu.showItem("m13");
                menu.hideItem("ms1");
                menu.hideItem("ms2");
                menu.showContextMenu(posx, posy);
            }
    Voil� a c�t� de �a j'ai des fonctions qui marche mon probl�me est que l'lorsque je vais cliquer sur copy par exemple ... Baaaaaaa .. il ne se passe rien

  5. #5
    Membre averti Avatar de Biboude
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2017
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2017
    Messages : 30
    Par d�faut La Solution
    Bon au cas ou quelqu'un tomberais sur les m�me probl�mes que moi.

    le probl�me �tant que quand je cliquai sur l'une de mes rubrique de mon menu contextuel il ne ce passais rien.
    Car les �l�ments n'�tait plus accessible apr�s l'initialisation de ma page html donc je ne pouvais pas associ� les fonctions avec les rubriques.

    Grace a une fonction handleClick() que j'ai associ� a un onclik sur mon menu. (en gros d�s que je clique n'import o� dans mon menu il va ex�cut� HandleClick (�a rajoute une �tape))

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    var menu = new dhtmlXMenuObject({       // Création de l'objet Menu
            context: true,
            onclick: handleClick
        });
    j'ai pu mettre en param�tre les ids des �l�ments comme �a quand je cliquai sur l'une de mes rubrique il r�cup�re l'id de l'�l�ment cliqu� et du coup en fonction de l'id (de l'�l�ment).
    Il ex�cute la fonction voulu

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    function handleClick(id) { if (id == laRubriqueCliqué) {exécute la fonction associé}
    Voilou !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 06/04/2009, 12h23
  2. [HTML] probleme avec une liste deroulante et un menu contextuel
    Par Akramweb dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 9
    Dernier message: 21/06/2008, 22h17
  3. [PHP-JS] menu contextuel php html
    Par c_klo dans le forum Langage
    R�ponses: 6
    Dernier message: 05/07/2006, 14h26
  4. [VB6] menu contextuel dynamique
    Par da40 dans le forum VB 6 et ant�rieur
    R�ponses: 10
    Dernier message: 15/07/2003, 11h53
  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