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 :

Les codes s'emmêlent !


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut Les codes s'emmêlent !
    Bonjour à tous,
    dans une page web, j'essaie de faire cohabiter deux scripts contenus dans deux fichiers externes distincts. Le premier concerne un Megamenu, le second des tabs contenues dans la page. Malheureusement, dès que je clique sur un onglet des tabs... cela déclenche le menu... Bref, je suis perdu, et n'ayant aucune connaissance javascript, je suppose que soit l'un des deux ne se "ferme pas"... ou que les "instructions sont les mêmes"...
    Si vous aviez la gentillesse de jeter un oeil à ces codes, et de me dire comment m'en tirer, ce serait sympa...
    Merci d'avance à tous.

    Code du Megamenu :

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;
     
    jQuery.fn.megamenu = function(options) {
      options = jQuery.extend({
                                  activate_action: "mouseover",
                                  deactivate_action: "mouseleave",
                                  show_method: "slideDown",
                                  hide_method: "slideUp",
                                  justify: "left",
                                  enable_js_shadow: true,
                                  shadow_size: 3,
                                  mm_timeout: 250
                              }, options);
      var $megamenu_object = this;
      if( options.activate_action == "click" ) options.mm_timeout = 0;
      $megamenu_object.children("li").each(function(){
        jQuery(this).addClass("mm-item");
        jQuery(".mm-item").css({ 'float': options.justify });
     
        jQuery(this).find("div:first").addClass("mm-item-content");
        jQuery(this).find("a:first").addClass("mm-item-link");
        var $mm_item_content = jQuery(this).find(".mm-item-content");
        var $mm_item_link = jQuery(this).find(".mm-item-link");
        $mm_item_content.hide();
     
        jQuery(document).bind("click", function(){
          jQuery(".mm-item-content").hide();
          jQuery(".mm-item-link").removeClass("mm-item-link-hover");
        });
        jQuery(this).bind("click", function(e){
          e.stopPropagation();
        });
        $mm_item_content.wrapInner('<div class="mm-content-base"></div>');
        if(options.enable_js_shadow == true) {
          $mm_item_content.append('<div class="mm-js-shadow"></div>');
        }
        var $mm_timer = 0;
        // Activation Method Starts
        jQuery(this).bind(options.activate_action, function(e){
          e.stopPropagation();
          var mm_item_link_obj = jQuery(this).find("a.mm-item-link");
          var mm_item_content_obj = jQuery(this).find("div.mm-item-content");
          clearTimeout($mm_timer);
          $mm_timer = setTimeout(function(){ //Emulate HoverIntent
            mm_item_link_obj.addClass("mm-item-link-hover");
            mm_item_content_obj.css({
              'top': ($mm_item_link.offset().top + $mm_item_link.outerHeight()) - 1 +"px",
              'left': ($mm_item_link.offset().left) - 5 + 'px'
            })
     
            if(options.justify == "left"){
              var mm_object_right_end = $megamenu_object.offset().left + $megamenu_object.outerWidth();
                                        // Coordinates of the right end of the megamenu object
              var mm_content_right_end = $mm_item_link.offset().left + $mm_item_content.outerWidth() - 5 ;
                                        // Coordinates of the right end of the megamenu content
              if( mm_content_right_end >= mm_object_right_end ) { // Menu content exceeding the outer box
                mm_item_content_obj.css({
                  'left': ($mm_item_link.offset().left - (mm_content_right_end - mm_object_right_end)) - 2 + 'px'
                }); // Limit megamenu inside the outer box
              }
            } else if( options.justify == "right" ) {
              var mm_object_left_end = $megamenu_object.offset().left;
                                        // Coordinates of the left end of the megamenu object
              var mm_content_left_end = $mm_item_link.offset().left - mm_item_content_obj.outerWidth() + 
                                        $mm_item_link.outerWidth() + 5;
                                        // Coordinates of the left end of the megamenu content
              if( mm_content_left_end <= mm_object_left_end ) { // Menu content exceeding the outer box
                mm_item_content_obj.css({
                  'left': mm_object_left_end + 2 + 'px'
                }); // Limit megamenu inside the outer box
              } else {
                mm_item_content_obj.css({
                  'left': mm_content_left_end + 'px'
                }); // Limit megamenu inside the outer box
              }
            }
            if(options.enable_js_shadow == true) {
              mm_item_content_obj.find(".mm-js-shadow").height( mm_item_content_obj.height() );
              mm_item_content_obj.find(".mm-js-shadow").width( mm_item_content_obj.width() );
              mm_item_content_obj.find(".mm-js-shadow").css({
                'top': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
                'left': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
                'opacity': 0.5
              });
            }
            switch(options.show_method) {
              case "simple":
                    mm_item_content_obj.show();
                    break;
              case "slideDown":
                    mm_item_content_obj.height("auto");
                    mm_item_content_obj.slideDown('fast');
                    break;
              case "fadeIn":
                    mm_item_content_obj.fadeTo('fast', 1);
                    break;
              default:
                    mm_item_content_obj.each( options.show_method );
                    break;
            }
          }, options.mm_timeout);
        });
        // Activation Method Ends
        // Deactivation Method Starts
        jQuery(this).bind(options.deactivate_action, function(e){
          e.stopPropagation();
          clearTimeout($mm_timer);
          var mm_item_link_obj = jQuery(this).find("a.mm-item-link");
          var mm_item_content_obj = jQuery(this).find("div.mm-item-content");
    //      mm_item_content_obj.stop();
          switch(options.hide_method) {
            case "simple":
                  mm_item_content_obj.hide();
                  mm_item_link_obj.removeClass("mm-item-link-hover");
                  break;
            case "slideUp":
                  mm_item_content_obj.slideUp( 'fast',  function() {
                    mm_item_link_obj.removeClass("mm-item-link-hover");
                  });
                  break;
            case "fadeOut":
                  mm_item_content_obj.fadeOut( 'fast', function() {
                    mm_item_link_obj.removeClass("mm-item-link-hover");
                  });
                  break;
            default:
                  mm_item_content_obj.each( options.hide_method );
                  mm_item_link_obj.removeClass("mm-item-link-hover");
                  break;
          }
          if(mm_item_content_obj.length < 1) mm_item_link_obj.removeClass("mm-item-link-hover");
        });
    //    Deactivation Method Ends
      });
      this.find(">li:last").after('<li class="clear-fix"></li>');
      this.show();
    };
    et code des tabs :

    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
    onload = function() {
    	var e, i = 0;
    	while (e = document.getElementById('gallery').getElementsByTagName ('DIV') [i++]) {
    		if (e.className == 'on' || e.className == 'off') {
    		e.onclick = function () {
    			var getEls = document.getElementsByTagName('DIV');
    				for (var z=0; z<getEls.length; z++) {
    				getEls[z].className=getEls[z].className.replace('show', 'hide');
    				getEls[z].className=getEls[z].className.replace('on', 'off');
    				}
    			this.className = 'on';
    			var max = this.getAttribute('title');
    			document.getElementById(max).className = "show";
    			}
    		}
    	}
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Les codes ne s'emmêlent pas, mais le 2ème interfère sur toute la page, au lieu de ne s'occuper que du <div id="gallery">.

    Essaie en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			var getEls = document.getElementsByTagName('DIV');
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			var getEls = document.getElementById('gallery').getElementsByTagName('div');
    Sans ça, le code change TOUS les <div> de la page (dont ceux du mega-menu), et pas uniquement ceux du <div id="gallery">

  3. #3
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut
    Merci de cette aide !
    Je ne comprends pas... Ta solution marche... mais pas toujours ! De façon aléatoire cela marche sur une page, pas sur une autre, je reviens à la première ça marche, puis une autre ça ne marche plus...
    Suis complètement paumé...

    J'ai oublié de dire, mais je ne sais pas si c'est important, que les pages comportent également une carte flash qui fait office de menu...

    Mais merci encore de d'être penché sur mon problème !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Vérifie que tu n'as pas plusieurs <div id="gallery"> dans les pages qui ne vont pas.
    Je ne vois que ça.

    [Edit] "gallery" est un mot très commun (qui pourrait être utilisé dans plusieurs scripts "génériques" et autres plugins "ready-to-use").
    Essaie de le "personnaliser" -> <div id="tabs-gallery">
    Ce qui suppose de faire cette modification PARTOUT où c'est nécessaire (CSS, script...).

  5. #5
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut
    Je cherche, et je vous tiens au courant !

  6. #6
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut
    Par moments, la carte flash n'appraît plus sur la page... Et les tabs ne déclenchent plus le menu... mais ne fonctionnent pas...

Discussions similaires

  1. Intercepter les codes d'erreurs Interbase
    Par tintin22 dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/06/2005, 16h31
  2. Intercepter les codes d'erreurs Interbase
    Par tintin22 dans le forum InterBase
    Réponses: 1
    Dernier message: 14/06/2005, 21h31

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