Ich habe diese Drupal 8 template heruntergeladen und die Website ist unter www.plotujeme.sk. Sie hat eine ansprechende Navigation mit diesem Skript .js:Warum funktioniert dieses .js-Skript nicht mehr und verursacht einen Browser-Einfrieren?
function sidebar_menu() {
var windowsize = jQuerywindow.width(),
jQuerynav = jQuery("nav"),
slide = {
clear: function() {
jQuerybody.removeClass('toggled');
jQuery('.overlay').hide();
jQuery('.easy-sidebar-toggle').prependTo("header");
//jQuery('#search').prependTo("body");
jQuery('.navbar.easy-sidebar').removeClass('toggled');
jQuery('#navbar').removeAttr("style");
},
start: function() {
jQuery('.overlay').show();
jQuerybody.addClass('toggled');
jQueryhtml.addClass('easy-sidebar-active');
jQuerynav.addClass('easy-sidebar');
jQuery('.easy-sidebar-toggle').prependTo(".easy-sidebar");
//jQuery('#search').prependTo("#navbar");
jQuery('#navbar').height(jQuerywindow.height()).css({
"padding-top": "60px"
});
},
remove: function() {
jQuerynav.removeClass('easy-sidebar');
}
};
if (windowsize < 1003) {
jQuerynav.addClass('easy-sidebar');
jQuery('.easy-sidebar-toggle').on("click", function (e) {
e.preventDefault();
if (jQuerybody.hasClass('toggled')) {
slide.clear();
} else {
slide.start();
}
});
/*
jQueryhtml.on('swiperight', function() {
slide.start();
});
jQueryhtml.on('swipeleft', function() {
slide.clear();
}); */
} else {
slide.clear();
slide.remove();
}
}
und:
jQuery(document).ready(function() {
"use strict";
sidebar_menu();
jQuery(window).resize(function() {
sidebar_menu();
});
});
Problem ist, dass, wenn ich mit einem Klick auf Hamburgere Taste ansprechende Navigation zu öffnen, es mehrmals funktioniert und es bleibt dann stehen Arbeiten, die Seite und ein Browser friert ein oder ist lange nicht mehr erreichbar. Ich habe auch bemerkt, dass es (sogar in der Vorlagenvorschau) manchmal gar nicht funktioniert und nach dem Anklicken des Hamburger-Icons nichts passiert. Wenn ich das Fenster mehrmals ändere, funktioniert es manchmal nicht.
Sehen Sie Fehler im Skript, die möglicherweise zu diesem Problem führen können?
Update: Ich habe auch versucht jQuery('.easy-sidebar-toggle').off("click");
kurz vor jQuery('.easy-sidebar-toggle').on("click", function() {...});
zu verwenden, aber die gleichen Ergebnisse erhielt.
Es gibt keinen spezifischen Fehler im Code. Beachten Sie jedoch, dass das Ereignis "resize" für jedes Pixel ausgelöst wird, für das die Größe des Fensters geändert wird. Ändern Sie die Höhe und Breite um 200 px, das ist möglicherweise 400-mal der Code ausgeführt wird. Ich würde vorschlagen, die Veranstaltung zu entprellen, oder besser noch, CSS-Medienabfragen zu verwenden, um zu tun, was Sie brauchen. –