dedlfix: Hintergrundmusik pausieren

Beitrag lesen

Tach!

Der Eventhandler wird aufgerufen, aber die Musik stoppt nicht.

Das hieße, das Musik-Stoppen wäre kaputt. Ist es aber nicht, wie du im weiteren Verlauf sagst.

Um zu prüfen, ob der Eventhandler auch wirklich aufgerufen wird, habe ich statt

$('#section4').on('scroll', function(){$('#audioplayer')[0].pause();});

folgendes

$(window).on('scroll', function(){$('#audioplayer')[0].pause();});

ausprobiert und auch festgestellt, dass die Musik stoppt.

Moment, da hast du ja gar nicht mehr deinen Eventhandler, sondern einen Eventhandler an einem ganz anderen Element. Da muss man die obere Aussage anders formulieren. Das Musik-Stoppen funktioniert prinzipiell mit dem gezeigten Code. Und Scroll-Events werden für das window-Element ausgelöst.

Es ist günstiger, wenn man die einzelnen Programmteile separat testet, um so ihre prinzipielle Funktionsfähigkeit festzustellen. In deinem Fall hast du den Kontext geändert und in dem hat es zufälligerweise funktioniert.

Wie testet man separat? Wenn es wenig Code ist, kann amn ihn in der Konsole des in den Browsern eingebauten Debuggers laufen lassen. Wenn es mehr Code wird, schreibt man sich eine Funktion, die man dann in der Konsole ausführen kann.

Daher liegt es definitiv an dem $('#section4').

Daran wird es eher nicht liegen, denn das ist ein ganz normaler JQuery-Selektor. Wenn du was anderes machst, beispielsweise .css('border', '1px solid red'), wirst du sehen, dass auch das nicht die Ursache ist.

Aber was ist nun die Ursache? Tja, das weiß ich auch nicht. Aber ich nehme mal an, dass bei besagtem Element kein Scroll-Event gefeuert wird. Wird es denn überhaupt gescrollt (ist sein Inhalt größer als der verfügbare Platz innerhalb der Seite, so dass es gescrollt werden muss) oder bewegt es sich nur mit über den Bildschirm, wenn was anderes gescrollt wird? Oder ist die Definition des Scroll-Events, dass auch Bewegungen, die kein eigentliches Scrollen sind, darunterfallen? Oder dass das Event an die Nachfahren weitergereicht wird, wenn eines der Vorfahrenelemente gescrollt wird?

dedlfix.