(29.11.2022, 00:51)admin schrieb: Mein Problem ist, das ich einfach nicht verstehe, was du davor hast. Ich habe der Ziege auf den Arsch geklickt , aber da passiert nichts. Des Weiteren verstehe ich auch nicht, was du mit mousmove vorhast. Eins ist auf jede fall wichtig. Ohne User Eingabe wird kein Sound abgespielt. Da muss eigentlich eine Mausbewegung reichen , das muss kein klick sein.
Vor 2 Tagen habe ich die Seite erneuert, wodurch du das Problem jetzt nicht mehr direkt sehen kannst. Es ist mit einem Trick umgangen, dass nun zunächst einmal ein Klick auf den roten Soundbutton (oder den Textlink rechts) ausgeführt werden muss bevor überhaupt etwas zu hören ist. Danach kommt Sound bei mousover + klick bei:
- der Ziege (Enttarnung der Zauberin Circe)
- dem Faß (Wilhelm Busch)
- dem Kerl im Faß (Diogenes von Sinope)
- der Prinzessin (Exposé zu einem unrealisierten Comic aus dem Jahr 1960)
Aber eigentlich wollte ich keinen Soundstart-Button. Doch das Problem war, dass beim
allerersten onMouseOver nach dem Seitenaufbau kein Ton kam, obgleich die Funktion Sound() abgearbeitet wurde. Man konnte zwar wahllos irgendwo in einen anderen Bereich klicken (oder eine unbedeutende Taste drücken) und würde somit das Problem gar nicht bemerken. Schwebte man aber zuerst mit der Maus über eines der 4 Objekte um dort zu klicken, hatte man den ersten Sound (von mouseover) verpasst.
Natürlich hätte man das so lassen können - es wird bei mouseover eh immer nur so etwas wie eine Kapitelüberschrift abgespielt. Aber ich verstehe einfach nicht warum diese erste Soundausgabe nur erfolgt wenn vorher mal geklickt oder eine Taste gedrückt wurde - und wenn das nun mal nicht zu ändern ist, dann wollte ich diese Aktion automatisch bei window.onload ausführen - aber mit den mir bekannten Simulationen hatte ich leider auch keinen Erfolg.
Deshalb jetzt der Soundschalter, der natürlich auch nützlich ist um den Programmablauf zu beeinflussen ...
Vergessen wir mal meine Anwendung, ich habe einen Test mit einem einfachen Botton zusammengestellt:
Code:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sound-Test</title>
</head>
<script type="text/javascript">
var TestMP3 = "48K-Ziege.mp3";
function Sound(s) {
var audio = new Audio(s);
audio.volume = 0.5;
audio.play();
}
</script>
<body>
<div id="demo">
<button type = "button" onmouseover="Sound(TestMP3)">Soundausgabe-Test</button>
</div>
</body>
</html>
Hier der
Link zum testen
Beim mouseover über den button geschieht nichts. Erst wenn ich einen Mausklick (muss nicht auf den Button sein) oder eine Taste gedrückt habe reagiert in der Folge alles wie es soll.
Das ganze kann natürlich auch mit Berechtigungen in den Sicherheitseinstellungen der Browser zu tun haben. Bei Firefox ist die automatische Wiedergabe standardmäßig blockiert - ist sie für alle (oder die betreffende) Seite erlaubt, funktioniert es.
Dann leuchtet mir aber trotzdem nicht ein, warum durch eine zusammenhanglose Useraktion die Berechtigung für die gesamte Session erteilt ist. Aber es ist wohl so, auch die anderen Browser unterdrücken die automatische Wiedergabe:
Hier für Chome:
https://www.clickstorm.de/blog/chrome-autoplay-policy/
(Autoplay mit Sound ist erlaubt, wenn:
* der Nutzer bereits mit der Seite interagiert hat (klicken, tippen, etc.)
* der Nutzer bereits ein Video mit Ton abgespielt hat)
Damit dürfte ich die Erklärung wohl selbst gefunden haben. MouseOver scheint nicht als Interaktion im Sinne von klicken und tippen zu gelten. Und vermutlich kann man das tatsächlich nicht über Javascript umgehen...