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

jQuery Discussion :

Uncaught error: Syntax error lors d'un clic sur un élément de menu


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Par défaut Uncaught error: Syntax error lors d'un clic sur un élément de menu
    Bonjour à tous,

    J'utilise un thème Wordpress nt-revity, que j'ai obtenu gratuitement grâce à une promo Envato.

    Après des semaines de travail pour designer mon site avec, je me suis aperçu qu'il a un bug critique : lorsque je clique sur un élément de menu, qui redirige vers une catégorie d'article ou un lien personnalisé, j'obtiens cette erreur depuis la librairie jQuery:

    Uncaught Error: Syntax error, unrecognized expression: https://www.monurl.com
    at Function.ea.error (jquery.js?ver=1.12.4-wp:462)
    at ea.tokenize (jquery.js?ver=1.12.4-wp:721)
    at ea.select (jquery.js?ver=1.12.4-wp:866)
    at Function.ea (jquery.js?ver=1.12.4-wp:301)
    at Function.a.find (jquery-migrate.min.js?ver=1.4.1:2)
    at n.fn.init.find (jquery.js?ver=1.12.4-wp:946)
    at n.fn.init.a.fn.find (jquery-migrate.min.js?ver=1.4.1:2)
    at a.fn.init.n.fn.init (jquery.js?ver=1.12.4-wp:964)
    at new a.fn.init (jquery-migrate.min.js?ver=1.4.1:2)
    at n (jquery.js?ver=1.12.4-wp:19)
    Voici le code (c'est tout simplement celui de jQuery 1.12.4):

    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
    function na(a) {
                return a && void 0 !== a.getElementsByTagName && a
            }
            c = ea.support = {}, f = ea.isXML = function(a) {
                var b = a && (a.ownerDocument || a).documentElement;
                return !!b && "HTML" !== b.nodeName
            }, m = ea.setDocument = function(a) {
                var b, e, g = a ? a.ownerDocument || a : v;
                return g !== n && 9 === g.nodeType && g.documentElement ? (n = g, o = n.documentElement, p = !f(n), (e = n.defaultView) && e.top !== e && (e.addEventListener ? e.addEventListener("unload", da, !1) : e.attachEvent && e.attachEvent("onunload", da)), c.attributes = ha(function(a) {
                    return a.className = "i", !a.getAttribute("className")
                }), c.getElementsByTagName = ha(function(a) {
                    return a.appendChild(n.createComment("")), !a.getElementsByTagName("*").length
                }), c.getElementsByClassName = Z.test(n.getElementsByClassName), c.getById = ha(function(a) {
                    return o.appendChild(a).id = u, !n.getElementsByName || !n.getElementsByName(u).length
                }), c.getById ? (d.find.ID = function(a, b) {
                    if (void 0 !== b.getElementById && p) {
                        var c = b.getElementById(a);
                        return c ? [c] : []
                    }
                }, d.filter.ID = function(a) {
                    var b = a.replace(ba, ca);
                    return function(a) {
                        return a.getAttribute("id") === b
                    }
                }) : (delete d.find.ID, d.filter.ID = function(a) {
                    var b = a.replace(ba, ca);
                    return function(a) {
                        var c = void 0 !== a.getAttributeNode && a.getAttributeNode("id");
                        return c && c.value === b
                    }
                }), d.find.TAG = c.getElementsByTagName ? function(a, b) {
                    return void 0 !== b.getElementsByTagName ? b.getElementsByTagName(a) : c.qsa ? b.querySelectorAll(a) : void 0
                } : function(a, b) {
                    var c, d = [],
                        e = 0,
                        f = b.getElementsByTagName(a);
                    if ("*" === a) {
                        while (c = f[e++]) 1 === c.nodeType && d.push(c);
                        return d
                    }
                    return f
                }, d.find.CLASS = c.getElementsByClassName && function(a, b) {
                    if (void 0 !== b.getElementsByClassName && p) return b.getElementsByClassName(a)
                }, r = [], q = [], (c.qsa = Z.test(n.querySelectorAll)) && (ha(function(a) {
                    o.appendChild(a).innerHTML = "<a id='" + u + "'></a><select id='" + u + "-\r\\' msallowcapture=''><option selected=''></option></select>", a.querySelectorAll("[msallowcapture^='']").length && q.push("[*^$]=" + L + "*(?:''|\"\")"), a.querySelectorAll("[selected]").length || q.push("\\[" + L + "*(?:value|" + K + ")"), a.querySelectorAll("[id~=" + u + "-]").length || q.push("~="), a.querySelectorAll(":checked").length || q.push(":checked"), a.querySelectorAll("a#" + u + "+*").length || q.push(".#.+[+~]")
                }), ha(function(a) {
                    var b = n.createElement("input");
                    b.setAttribute("type", "hidden"), a.appendChild(b).setAttribute("name", "D"), a.querySelectorAll("[name=d]").length && q.push("name" + L + "*[*^$|!~]?="), a.querySelectorAll(":enabled").length || q.push(":enabled", ":disabled"), a.querySelectorAll("*,:x"), q.push(",.*:")
                })), (c.matchesSelector = Z.test(s = o.matches || o.webkitMatchesSelector || o.mozMatchesSelector || o.oMatchesSelector || o.msMatchesSelector)) && ha(function(a) {
                    c.disconnectedMatch = s.call(a, "div"), s.call(a, "[s!='']:x"), r.push("!=", O)
                }), q = q.length && new RegExp(q.join("|")), r = r.length && new RegExp(r.join("|")), b = Z.test(o.compareDocumentPosition), t = b || Z.test(o.contains) ? function(a, b) {
                    var c = 9 === a.nodeType ? a.documentElement : a,
                        d = b && b.parentNode;
                    return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)))
                } : function(a, b) {
                    if (b)
                        while (b = b.parentNode)
                            if (b === a) return !0;
                    return !1
                }, B = b ? function(a, b) {
                    if (a === b) return l = !0, 0;
                    var d = !a.compareDocumentPosition - !b.compareDocumentPosition;
                    return d || (d = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1, 1 & d || !c.sortDetached && b.compareDocumentPosition(a) === d ? a === n || a.ownerDocument === v && t(v, a) ? -1 : b === n || b.ownerDocument === v && t(v, b) ? 1 : k ? J(k, a) - J(k, b) : 0 : 4 & d ? -1 : 1)
                } : function(a, b) {
                    if (a === b) return l = !0, 0;
                    var c, d = 0,
                        e = a.parentNode,
                        f = b.parentNode,
                        g = [a],
                        h = [b];
                    if (!e || !f) return a === n ? -1 : b === n ? 1 : e ? -1 : f ? 1 : k ? J(k, a) - J(k, b) : 0;
                    if (e === f) return ja(a, b);
                    c = a;
                    while (c = c.parentNode) g.unshift(c);
                    c = b;
                    while (c = c.parentNode) h.unshift(c);
                    while (g[d] === h[d]) d++;
                    return d ? ja(g[d], h[d]) : g[d] === v ? -1 : h[d] === v ? 1 : 0
                }, n) : n
            }, ea.matches = function(a, b) {
                return ea(a, null, null, b)
            }, ea.matchesSelector = function(a, b) {
                if ((a.ownerDocument || a) !== n && m(a), b = b.replace(T, "='$1']"), c.matchesSelector && p && !A[b + " "] && (!r || !r.test(b)) && (!q || !q.test(b))) try {
                    var d = s.call(a, b);
                    if (d || c.disconnectedMatch || a.document && 11 !== a.document.nodeType) return d
                } catch (xa) {}
                return ea(b, n, null, [a]).length > 0
            }, ea.contains = function(a, b) {
                return (a.ownerDocument || a) !== n && m(a), t(a, b)
            }, ea.attr = function(a, b) {
                (a.ownerDocument || a) !== n && m(a);
                var e = d.attrHandle[b.toLowerCase()],
                    f = e && D.call(d.attrHandle, b.toLowerCase()) ? e(a, b, !p) : void 0;
                return void 0 !== f ? f : c.attributes || !p ? a.getAttribute(b) : (f = a.getAttributeNode(b)) && f.specified ? f.value : null
            }, ea.error = function(a) {
                throw new Error("Syntax error, unrecognized expression: " + a)
            }, ea.uniqueSort = function(a) {
                var b, d = [],
                    e = 0,
                    f = 0;
                if (l = !c.detectDuplicates, k = !c.sortStable && a.slice(0), a.sort(B), l) {
                    while (b = a[f++]) b === a[f] && (e = d.push(f));
                    while (e--) a.splice(d[e], 1)
                }
                return k = null, a
            },[...]
    Je vous avoue que ça fait des jours que je cherche et que je tatonne, mais je reconnais que vu le code de la librairie, cela est au dessus de mes compétences...
    Pouvez-vous m'aider, ou au moins me donner des conseils sur comment le déboguer ?

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Salut,

    Je pense que c'est une erreur de syntaxe dans le sélecteur jQuery, quel est le code html de tes éléments ?

    Fais un clic droit sur les éléments puis inspecter pour voir le code source html et colles le.

    Tu gère le clic sur les éléments du menu avec jQuery ?

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Par défaut
    Salut Toufik,

    Merci de t'être donné la peine de me répondre.

    Les boutons du menu sont gérés par une interface spéciale dans l'admin de Wordpress. Pour les clics, je ne sais pas ce qu'ils utilisent, mais ça m'a tout l'air d'être géré en jQuery, oui.

    Voici le code HTML:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <ul id="menu-principal" class="k-nav-links">
       <li id="menu-item-16" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16"><a title="À propos de" href="https://monsite.com/a-propos-de/">À propos de</a></li>
       <li id="menu-item-91" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-91sub item-has-children"><a title="Tutoriels" href="https://monsite.com/category/tutoriels/" data-toggle="dropdown" class="dropdown-toggle">Tutoriels <span class="caret"></span></a>
    <ul role="menu" class="sub-menu dropdown-menu">
    	<li id="menu-item-93" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-93"><a title="Mobile" href="https://monsite.com/category/tutoriels/mobile/">Mobile</a></li>
    </ul>
    </li>
    <li id="menu-item-92" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-92"><a title="Astuces" href="#" data-nav-to="https://monsite.com/category/astuces/">Astuces</a></li>
    <li id="menu-item-18" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18"><a title="Contact" href="https://monsite.com/contact/">Contact</a></li>
    </ul>

    Dans ce code, le bouton Astuces génère l'erreur :
    jquery.js?ver=1.12.4-wp:462 Uncaught Error: Syntax error, unrecognized expression: https://monsite.com/category/astuces/
    at Function.ea.error (jquery.js?ver=1.12.4-wp:462)
    at ea.tokenize (jquery.js?ver=1.12.4-wp:721)
    at ea.select (jquery.js?ver=1.12.4-wp:866)
    at Function.ea (jquery.js?ver=1.12.4-wp:301)
    at Function.a.find (jquery-migrate.min.js?ver=1.4.1:2)
    at n.fn.init.find (jquery.js?ver=1.12.4-wp:946)
    at n.fn.init.a.fn.find (jquery-migrate.min.js?ver=1.4.1:2)
    at a.fn.init.n.fn.init (jquery.js?ver=1.12.4-wp:964)
    at new a.fn.init (jquery-migrate.min.js?ver=1.4.1:2)
    at n (jquery.js?ver=1.12.4-wp:19)
    Chose que je n'avais pas remarquée jusqu'alors, le bouton Tutoriels génère une autre erreur :
    Uncaught TypeError: Cannot read property 'top' of undefined
    at HTMLAnchorElement.ql_clickAnchor (minified.js?ver=1.0:1391)
    at HTMLAnchorElement.dispatch (jquery.js?ver=1.12.4-wp:1627)
    at HTMLAnchorElement.r.handle (jquery.js?ver=1.12.4-wp:1567)
    Mais passons sur celle-ci, je la résoudrai plus tard.

    Et voici le code PHP qui, je pense, génère ce code HTML:
    Code PHP : 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
    <?php
    // START METABOXMENU
    if ( ! function_exists( 'nt_revity_combinemenu' ) ) :
    	function nt_revity_combinemenu() {
     
    		$nt_revity_menu_item_name 	= 	rwmb_meta( 'nt_revity_section_name' );
    		$nt_revity_menu_item_url 	= 	rwmb_meta( 'nt_revity_section_url' );
    		$nt_revity_menutype 		= 	rwmb_meta( 'nt_revity_menutype' );
     
    	if( $nt_revity_menutype == 'm' ) :
     
    		if( $nt_revity_menu_item_name !='' ) : ?>
     
    		   <ul class="k-nav-links">
     
    		   <!-- Custom: Force add Home button (because of old jQuery bug) - Desperately not working -->
    		   <!-- <li><a href="https://monsite.com/unepage"><span>Home</span></a></li> -->
     
    		   <?php foreach (array_combine($nt_revity_menu_item_name, $nt_revity_menu_item_url) as $name => $url) {
     
    		   if (false === strpos($url, '://')) {
    		   ?>
     
    			<li><a data-nav-to="<?php echo esc_url( $url ); ?>" href="#"><span><?php echo esc_html( $name ); ?></span></a></li>
     
    		   <?php }else{ ?>
    			<li><a href="<?php echo esc_url( $url ); ?>"><span><?php echo esc_html( $name ); ?></span></a></li>
     
    		   <?php }
    		   }
    		   ?>
     
    		   </ul>
     
    		<?php endif;
     
    	else :
     
    		wp_nav_menu( array(
    			'menu'              => 'primary',
    			'theme_location'    => 'primary',
    			'depth'             => 3,
    			'container'         => '',
    			'container_class'   => '',
    			'menu_class'        => 'k-nav-links',
    			'menu_id'		    => '',
    			'echo' 				=> true,
    			'fallback_cb'       => 'Nt_Revity_Wp_Bootstrap_Navwalker::fallback',
    			'walker'            => new Nt_Revity_Wp_Bootstrap_Navwalker()
    		));
     
    	endif;
     
    	}
    endif;

    Comme tu peux le voir, en rouge, j'ai essayé désespérément de rajouter des menus "à la main" (ce n'est pas propre, je sais), dans l'espoir de contourner le problème.
    Mais malheureusement, mes éléments rajoutés ne s'affichent jamais, même en nettoyant tous les caches possibles.

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Salut,

    Vérifie d'abord dans le fichier js s'il y'a un gestionnaire d'événement "click" attaché aux balises <a> ou les <li> du menu.

    Et d'après ce que je vois, ta version actuelle de jQuery est 1.12.4, alors qu'on est maintenant à 3.5.1.

    Et si tu modifies la version de jQuery, toujours les mêmes erreurs ?

    Voir le cdn des versions jQuery.

    Sans code on ne peut rien deviner...

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Par défaut
    Voici ce que j'ai trouvé :

    minified.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        function ql_clickAnchor(e) {
            var target = jQuery(this).attr("data-nav-to");
            if (jQuery(this).attr("href") == "#") {
                e.preventDefault()
            }
            jQuery("html, body").stop().animate({
                scrollTop: jQuery(target).offset().top - 50
            }, 600)
        };
    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
        function ql_scrollToggle() {
            var scrollPos = jQuery(document).scrollTop();
            menuItems.each(function() {
                var currentLink = jQuery(this);
                var refSection = jQuery(currentLink.attr("data-nav-to"));
                if (currentLink.attr("href") == "#" && refSection.offset() != undefined) {
                    var topOffset = refSection.offset().top - 60;
                    var bottomOffset = topOffset + refSection.height();
                    if (topOffset <= scrollPos) {
                        menuItems.parent().removeClass("active");
                        currentLink.parent().addClass("active")
                    } else {
                        currentLink.parent().removeClass("active")
                    }
                }
            })
        };
        navToggle.on("click", ql_toggleMenu);
        jQuery(".main-container").on("click", ql_closeMenu);
        menuItems.on("click", ql_closeMenu);
        ql_resizeFunc();
        jQuery(window).on("resize", ql_resizeFunc);
        if (params.stuck) {
            ql_fixedNav();
            jQuery(window).on("scroll", ql_fixedNav);
            jQuery(window).on("resize", ql_fixedNav)
        }
        jQuery(window).on("scroll", ql_scrollToggle);
        menuItems.on("click", ql_clickAnchor)
    };
    Main.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
        // =================================================================================
        // Parallax Content
        // =================================================================================
        var parallax_content = $(".parallax-text");
        function parallax_text(){
          if($window.width() >= 992){
            var s = $window.scrollTop() + 0.001;
            var a = s*0.01;
            var b = (a/s*10)*a;
            var c = 1 - b*1.5;
            parallax_content.css("opacity", c);
            parallax_content.css("-webkit-transform", "translateY(" + (s/2) + "px)");
            parallax_content.css("-moz-transform", "translateY(" + (s/2) + "px)");
          } else {
            parallax_content.css("-webkit-transform", "translateY(0)");
            parallax_content.css("-moz-transform", "translateY(0)");
            parallax_content.css("opacity", 1);
          }
        }
        if(parallax_content.length){
          $window.on("scroll", parallax_text);
          $window.on("resize", parallax_text);
        }
     
     
        $('.dropdown-menu li a').removeAttr("data-nav-to");
        $('a[data-nav-to]').attr("href", "#");
    theme-init.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // If item has_children add atts to a.
    			if ( $args->has_children && $depth === 0 ) {
    				$atts['href']   		= $item->url;
    				$atts['data-toggle']	= 'dropdown';
    				$atts['class']			= 'dropdown-toggle';
    			} else {
    				$atts['href'] = ! empty( $item->url ) ? $item->url: '';
    				if( 'page' != $item->object ){
    					$atts['data-nav-to'] = ! empty( $item->url ) ? $item->url : '';
    				}
    			}

    template-parts.php
    Code PHP : 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
    // START METABOXMENU
    if ( ! function_exists( 'nt_revity_combinemenu' ) ) :
    	function nt_revity_combinemenu() {
     
    		$nt_revity_menu_item_name 	= 	rwmb_meta( 'nt_revity_section_name' );
    		$nt_revity_menu_item_url 	= 	rwmb_meta( 'nt_revity_section_url' );
    		$nt_revity_menutype 		= 	rwmb_meta( 'nt_revity_menutype' );
     
    	if( $nt_revity_menutype == 'm' ) :
     
    		if( $nt_revity_menu_item_name !='' ) : ?>
     
    		   <ul class="k-nav-links">
     
    		   <!-- Custom: Force add Home button (because of old jQuery bug) - Desperately not working -->
    		   <!-- <li><a href="https://monsite.fr/"><span>Home</span></a></li> -->
     
    		   <?php foreach (array_combine($nt_revity_menu_item_name, $nt_revity_menu_item_url) as $name => $url) {
     
    		   if (false === strpos($url, '://')) {
    		   ?>
     
    			<li><a data-nav-to="<?php echo esc_url( $url ); ?>" href="#"><span><?php echo esc_html( $name ); ?></span></a></li>
     
    		   <?php }else{ ?>
    			<li><a href="<?php echo esc_url( $url ); ?>"><span><?php echo esc_html( $name ); ?></span></a></li>
     
    		   <?php }
    		   }
    		   ?>
     
    		   </ul>
     
    		<?php endif;
     
    	else :
     
    		wp_nav_menu( array(
    			'menu'              => 'primary',
    			'theme_location'    => 'primary',
    			'depth'             => 3,
    			'container'         => '',
    			'container_class'   => '',
    			'menu_class'        => 'k-nav-links',
    			'menu_id'		    => '',
    			'echo' 				=> true,
    			'fallback_cb'       => 'Nt_Revity_Wp_Bootstrap_Navwalker::fallback',
    			'walker'            => new Nt_Revity_Wp_Bootstrap_Navwalker()
    		));
     
    	endif;
     
    	}
    endif;
     
    add_action( 'nt_revity_combinemenu_action',  'nt_revity_combinemenu', 10 );

    Je ne suis pas sûr que ça m'aide, mais je vais creuser un peu de mon côté en attendant ta réponse.
    Merci.

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonsoir,

    Je pense que le problème est relatif à l'attribut data-nav-to.

    Voyons un peu comment ton menu est généré :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php 
       foreach (array_combine($nt_revity_menu_item_name, $nt_revity_menu_item_url) as $name => $url) {
            if (false === strpos($url, '://')) {?>
                 <li><a data-nav-to="<?php echo esc_url( $url ); ?>" href="#"><span><?php echo esc_html( $name ); ?></span></a></li>
            <?php } else{ ?>
    	     <li><a href="<?php echo esc_url( $url ); ?>"><span><?php echo esc_html( $name ); ?></span></a></li>
            <?php }
       }
    Fais un var_dump(array_combine($nt_revity_menu_item_name, $nt_revity_menu_item_url)); avant la boucle foreach pour nous montrer le contenu de ce tableau combiné.

    Après au chargement de la page jQuery intervient, dans main.js on trouve deux lignes, la première qui supprime l'attribut data-nav-to de tous les <a> enfants des <li> qui sont dans ".dropdown-menu", et la deuxième remplace les "href" par "#" de tous les <a> ayant un attribut data-nav-to :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $('.dropdown-menu li a').removeAttr("data-nav-to");
    $('a[data-nav-to]').attr("href", "#");
    Donc pour le bouton Tutoriels qui génère une erreur, dans minified.js on voit ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    menuItems.on("click", ql_clickAnchor);
    Cela attache un écouteur d'événement click sur les "menuItems", et d'après ce que je vois la variable js "menuItems" vaut aux <a></a> enfants de <li class="menu-item">...</li> (cherche dans le fichier js la valeur initiale de menuItems pour me corriger si je me trompe...).

    Lorsqu'on clique sur ces <a> la fonction ql_clickAnchor() s'exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function ql_clickAnchor(e) {
         var target = jQuery(this).attr("data-nav-to");//le problème est que les <a> n'ont pas d'attribut "data-nav-to", donc target=undefined !
         //tu peux mettre un console.log("target :"+target); pour voir...
         if (jQuery(this).attr("href") == "#") {//cette condition n'est pas vraie lorsque tu cliques sur le <a> du Tutoriels car son href="https://monsite.com/category/tutoriels/" et pas "#"
             e.preventDefault()
         }
         jQuery("html, body").stop().animate({
             scrollTop: jQuery("[data-nav-to='"+target+"']").offset().top - 50//ce qui donne une erreur ici, vu que target est undefined.
         }, 600)
    }
    Tu peux éviter cette erreur en vérifiant l'existence de target (mais ça n'empêche pas de chercher une solution plus propre...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(target){//si target est défini ...
         jQuery("html, body").stop().animate({
             scrollTop: jQuery(target).offset().top - 50//ce qui donne une erreur ici, vu que target est undefined.
         }, 600)
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sélectionner un ListViewItem lors d'un clic sur un élément contenu dans son ItemTemplate
    Par Sankasssss dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 25/01/2018, 10h00
  2. [JFrame] lancer une méthode lors d'un clic sur la croix rouge
    Par Mushu74 dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 17/06/2008, 15h55
  3. Récupérer l'index lors d'un clic sur menustrip
    Par GriffinK dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/04/2008, 14h54
  4. Ouvrir 4 états lors d'un clic sur un bouton
    Par Seb33300 dans le forum WebDev
    Réponses: 8
    Dernier message: 28/01/2008, 15h53
  5. Réponses: 3
    Dernier message: 23/10/2007, 13h35

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