document.getElementById("id").data für <object> möglich?
Fritz
- javascript
Hallo,
ein uraltes Problem, für das ich bisher nur eine IE-proprietäre Lösung gefungen habe:
Ich möchte bestimmten events unterschiedliche Sounds zuweisen.
mit bgsound und document.all.music.src = "click.wav"; kann man den IE dazu bringen.
Nun habe ich mich an einer standardkonformen Variante versucht, allerdings ohne Erfolg.
Hier eine Testdatei:
---------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Klick</title>
<script type="text/javascript">
function playsound(welcher) {
document.getElementById("ton").data = welcher;
}
</script>
</head>
<body>
<object id="ton" data="click.wav" type="audio/x-wav" width="200" height="20"></object>
<p>welcher Ton?<br />
<a href="javascript:playsound('click.wav')">Ton 1</a><br />
<a href="javascript:playsound('reload2.wav')">Ton 2</a><br />
</p>
</body>
</html>
-------------------------------------------------------------
Warum führt document.getElementById("ton").data = welcher;
in diesem Kontext zu keiner Reaktion?
Sollte mein Vorhaben tatsächlich nicht realisierbar sein?
Gruß Fritz
Hi,
Warum führt document.getElementById("ton").data = welcher;
in diesem Kontext zu keiner Reaktion?
weil nur in wenigen, definierten Ausnahmefällen eine direkte Zuordnung zwischen HTML-Attribut und Objekt-Eigenschaft existiert. Arbeite mit setAttribute(). Und, tu Dir und Deinen Besuchern bitte den Gefallen, per se _keine_ Musik gestartet zu haben.
Cheatah
Hallo,
weil nur in wenigen, definierten Ausnahmefällen eine direkte Zuordnung zwischen HTML-Attribut und Objekt-Eigenschaft existiert.
Aber genau bei der Eigenschaft data des objekt Elements sollte das doch der Fall sein:
http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=setAttribute()
Arbeite mit setAttribute().
Geht das auch mit ids? Hab leider keine vernünftige Referenz gefunden, aus der ich die Syntax entnehmen könnte.
Und SELFHTML selbst rät mehr oder weniger dringend von der Verwendung ab ;-)
Und, tu Dir und Deinen Besuchern bitte den Gefallen, per se _keine_ Musik gestartet zu haben.
Ja, davon kannst Du ausgehen. Es handelt sich um kurze Signaltöne, die in einer barrierefreien Anwendung blinden Usern bestimmte Ereignisse ankündigen sollen.
Gruß Fritz
Hallo,
hab's jetzt mal mit
document.getElementById("ton").setAttribute("data","reload2.wav");
versucht.
Leider erfolglos :-(
Gruß Fritz
Hallo,
weil nur in wenigen, definierten Ausnahmefällen eine direkte Zuordnung zwischen HTML-Attribut und Objekt-Eigenschaft existiert.
Naja, schon, für data jedenfalls ist das der Fall.
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-9893177
Arbeite mit setAttribute().
Müsste aufs selbe herauskommen.
Mathias
Hi,
weil nur in wenigen, definierten Ausnahmefällen eine direkte Zuordnung zwischen HTML-Attribut und Objekt-Eigenschaft existiert.
Naja, schon, für data jedenfalls ist das der Fall.
jupp. Wenn das Offensichtliche aber nicht funktioniert, erheben sich aus meinem Gedächtnis immer ganz gerne Erinnerungen an Bugs - nicht immer ganz korrekt, wie ich https://forum.selfhtml.org/?t=134289&m=870981 entnehme.
Arbeite mit setAttribute().
Müsste aufs selbe herauskommen.
s/Müsste/Sollte/ - nur holt einen da leider allzu oft die Realität ein ;-)
Cheatah
Warum führt document.getElementById("ton").data = welcher;
in diesem Kontext zu keiner Reaktion?
weil Gott uns Besuchern gnädig sein will.
Tu der Welt bitte einen Gefallen und mach nicht noch so ne nervtötende Seite mit Besucher-Fernhalte-Alarmton.
Hallo,
Tu der Welt bitte einen Gefallen und mach nicht noch so ne nervtötende Seite mit Besucher-Fernhalte-Alarmton.
Wie bitte kommst Du zu dieser Annahme?
Es handelt sich um kurze Signaltöne, die in einer barrierefreien Anwendung blinden Usern bestimmte Ereignisse ankündigen sollen.
Gruß Fritz
Hallo,
<object id="ton" data="click.wav" type="audio/x-wav" width="200" height="20"></object>
document.getElementById("ton").data = welcher;
Warum führt document.getElementById("ton").data = welcher;
Wenn ich mich recht erinnere, ist das ein IE-Fehler (oder geht es auch um andere Browser). Es sollte funktionieren, wenn du das object-Element komplett neu mit JavaScript in das Dokument schreibst (z.B. ein div herum und darin mit innerHTML das object neu schreiben, nur mit anderer wav-Adresse).
Im Übrigen würde ich versuchen, Flash zu benutzen, dann kannst du auch MP3-Dateien verwenden. Über die Schnittstelle zu Flash könnte man dann (zumindest in einigen Browsern, siehe LiveConnect) ein anderes MP3 laden.
Mathias
Hallo,
Wenn ich mich recht erinnere, ist das ein IE-Fehler (oder geht es auch um andere Browser).
Nein, es geht um Browser ;-)
Es sollte funktionieren, wenn du das object-Element komplett neu mit JavaScript in das Dokument schreibst (z.B. ein div herum und darin mit innerHTML das object neu schreiben, nur mit anderer wav-Adresse).
Bingo!
Danke
Gruß Fritz