I'm sometimes getting an error in my chrome console saying 'Uncaught RangeError: Maximum call stack size exceeded' I'm not sure what is causing it but I believe it is to do with a JavaScript setInterval method I'm using in my .js file.
I'm using the setInterval method to hide a sticky top nav after 4 seconds of inactivity by the user, the sticky nav reappears after the user moves their mouse or makes a keypress.
Also, while the below code is working as described in Chrome, in Firefox it only works once, i.e. the sticky nav is hidden once & reapears on mouse/keypress but does not disappear again.
What may be causing this error?
Why is Firefox behaving differently to Chrome?
I think may be making an error in how I'm using the setInterval method. In the code below, I set the interval at the beginning & clear the interval once the user clicks on the nav button (i.e. .mk-nav-responsive-link), I then re-start the interval method when the user clicks on the nav button to close the menu.
<!-- CODE ABOVE OMITTED FOR BREVITY -->
// Hide Nav on User Inactivity START
var userInactivity = 1;
var userInactivityInterval = setInterval(function(){userInactivityTimer()},1000);
function userInactivityTimer(){
if(userInactivity == 4 && jQuery(window).scrollTop() > (vh/8)){
jQuery('.mk-nav-responsive-link img').fadeOut();
userInactivity = 1;
}
userInactivity = userInactivity+1;
// console.log(userInactivity);
// console.log(jQuery(window).scrollTop());
jQuery(document).bind('mousemove keypress', function() {
jQuery('.mk-nav-responsive-link img').fadeIn();
userInactivity = 1;
});
}
// Hide Nav on User Inactivity END
// CUSTOM DROP DOWN MENU TRANSITIONS START
jQuery('.mk-nav-responsive-link').toggle(function() {
// RESPONSIVE FIX TO SHOW THE ENTIRE DROP DOWN MENU ON SMALL HEIGHT SCREENS
if (jQuery(window).height() < 405) {
jQuery("#mk-responsive-nav").css('height','581px');
jQuery("#responsive-nav-bg").animate({
top:'0',
height:'575px'
},175, 'linear');
} else {
jQuery("#responsive-nav-bg").animate({
top:'0',
height:'100vh'
},175, 'linear');
}
jQuery(".mk-desktop-logo").attr('src',"/wp-content/themes/jupiter-child/images/EW-logo-white.png");
jQuery(".mk-nav-responsive-link > img").attr('src',"/wp-content/themes/jupiter-child/images/x-close-menu.png");
jQuery(".mk-nav-responsive-link > img").css('padding-top','0');
jQuery(".mk-nav-responsive-link > img").css('padding-right','0');
jQuery('.mk-go-top.on').css({'display' : 'none'});
jQuery('.mk-desktop-logo').css({'position' : 'fixed'});
clearInterval(userInactivityInterval);
}, function() {
jQuery("#responsive-nav-bg").animate({
top:'87px',
height:'0'
},250, 'linear');
if (jQuery(window).width() < 405) {
jQuery(".mk-desktop-logo").attr('src',"/wp-content/themes/jupiter-child/images/EW-logo-responsive.png");
} else {
jQuery(".mk-desktop-logo").attr('src',"/wp-content/uploads/EW-logo.png");
}
jQuery(".mk-nav-responsive-link > img").attr('src',"/wp-content/themes/jupiter-child/images/burger-menu-icon.png");
jQuery(".mk-nav-responsive-link > img").css('padding-top','10px');
jQuery(".mk-nav-responsive-link > img").css('padding-right','5px');
jQuery('.mk-go-top.on').css({'display' : 'inline-block'});
jQuery('.mk-desktop-logo').css({'position' : 'relative'});
userInactivityInterval = setInterval(function(){userInactivityTimer()},1000);
});
// CUSTOM DROP DOWN MENU TRANSITIONS END
<!-- CODE BELOW OMITTED FOR BREVITY -->