it-swarm.com.de

JS, das aus einer Vorlage geladen wurde, wird nicht in einer benutzerdefinierten Komponente ausgeführt

Ich habe eine Modulposition in meiner Vorlage erstellt, in der ich ein benutzerdefiniertes Modul lade, das eine Menüleiste ist.

mit dem nächsten Skript ändere ich seine Position auf fixed, wenn jemand mehr als 200px scrollt, so dass die Leiste immer oben ist.

jQuery(window).scroll(function(e){ 
  var jQueryel = jQuery('.fixedElement'); 
  var isPositionFixed = (jQueryel.css('position') == 'fixed');
  if (jQuery(this).scrollTop() > 200 && !isPositionFixed){ 
    jQuery('.fixedElement').css({'position': 'fixed', 'top': '0px'}); 
    jQuery('.fixedElement').addClass("bgNormal");

  }
  if (jQuery(this).scrollTop() < 200 && isPositionFixed)
  {
    jQuery('.fixedElement').css({'position': 'absolute', 'top': '0px'}); 
    jQuery('.fixedElement').removeClass("bgNormal");
  } 
});

Ich habe dieses Skript in den Kopf der Vorlage eingefügt. Es läuft reibungslos auf jeder Seite außer dem views eines benutzerdefinierten component, das ich erstellt habe.

Die Konsole gibt keinen Fehler aus und überprüft den Quellcode. Ich kann feststellen, dass das Skript korrekt geladen ist. Aus irgendeinem Grund läuft es einfach nicht.

jQuery ist korrekt geladen und mir fällt nichts ein, was die Ansicht zum Ausführen des js beeinträchtigen könnte.

Ich habe ein anderes component hochgeladen und festgestellt, dass das Skript auch nicht ausgeführt wird.

Ist das ein häufiges Problem? Muss ich etwas tun, um Skripte von der Vorlage zur Ansicht zu laden? Oder ist es ein Entwicklungsproblem?

1
IseNgaRt

Ok, nachdem ich viel gesucht habe, stelle ich fest, dass dies hauptsächlich ein CSS-Problem war.

$(window).scroll() wurde nicht ausgelöst, da #content div eine zufällige Regel erhielt, die es nicht zuließ overflow.

Also würde $(window) nicht scrollen, egal was passiert.

Als ich das reparierte, funktionierte es wie ein Zauber!

0
IseNgaRt

Bei einigen benutzerdefinierten Komponenten musste ich den js in den Ansichten eine "Wrapper" -Funktion hinzufügen, damit sie ordnungsgemäß funktionieren.

Da Sie nur Probleme mit dem Skript im Abschnitt "Benutzerdefinierte Komponenten" haben, kann es zu Konflikten beim Laden von Skripten durch die Komponente kommen, im Gegensatz zu der Art und Weise, wie Joomla Core Skripten verarbeitet.

<script type="text/javascript">
    (function ($) {
        $(document).ready(function () {
            $(window).scroll(function(e){ 
                var jQueryel = jQuery('.fixedElement'); 
                var isPositionFixed = (jQueryel.css('position') == 'fixed');
                if ($(this).scrollTop() > 200 && !isPositionFixed){ 
                    $('.fixedElement').css({'position': 'fixed', 'top': '0px'}); 
                    $('.fixedElement').addClass("bgNormal");

                }
                if ($(this).scrollTop() < 200 && isPositionFixed)
                {
                    $('.fixedElement').css({'position': 'absolute', 'top': '0px'}); 
                    $('.fixedElement').removeClass("bgNormal");
                } 
            });
        });

    })(jQuery);
</script>
0
NJA