Bei Widgets gibt es laut WHATWG das Objekt Audio, welches für die Ausgabe und Steuerung von Sound zuständig ist.
Mittels der Methode loop lässt sich Sound abspielen und mit stop auch beenden.
Das geht ganz einfach.
Zuerst ein Object Beep erstellen, weleches auf das Objekt Audio zugreift und später den Piepton erzeugt:
function Beep(u) {
this.url = u; //url of audio file
this.stopped = false;
this.audio = new Audio(this.url);
this.start = function() {
this.stopped = false;
// -- deactivate on non-Windows; problems with sound
//if(navigator.platform.indexOf("Win") == -1) return;
//--
this.audio.loop(9999);
}
this.stop = function() {
this.stopped = true;
this.audio.stop();
}
}
Alles keine Javascript-Zauberei wie eine sieht.
Der Piepton kann dann mit wie folgt erzeugt werden: var mybeep = new Beep();.
Gestartet wird der Beep mit mybeep.start() und gestoppt mit mybeep.stop().
Wird das Ganze noch auf einen Clickhandler gelegt, kann im Widget dann der Piepton an und ausgestellt werden.
So weit so gut. Unter Windows klappt das wunderbar wie bei meinem 24-Stunden-Timer zu sehen ist. Nur bei Linux klappt das Stoppen des Sound nur einmal, danach muss Opera beendet werden, um das Dauergepiepe nicht mehr zu hören.
Seit 2007 existiert dieser Bug in Opera, wurde aber immer noch nicht gefixt. Das hat mich veranlasst, nach einer Rückfrage im Opera-Info-Forum, wenigstens nochmals für Opera 10 mit einen Testcase den Bug an Operas Bugtracker zu melden.
Ich bin ja gespannt, ob das bei Operas Entwicklern überhaupt angeschaut wird.

Kommentar für Blogeintrag
TrackBack-URL:
http://gwendragon.de/blog/Web/Browser/Opera/Bugs/widget-audio-nicht-unter-linux.html/trackback↑Artikel