Javascript + sound

Liebe/-r Experte/-in,

ich möchte in einem html-File die Tastenschläge mit dem Aufruf:

abfangen.

Ausserdem möchte ich bei bestimmten Ereignissen ein Sound abspielen, mit dem Aufruf:
document.getElementById(„sound_element“).innerHTML="";

Leider wird meine doonkeydown(…)-JavaScript-Funktion nicht mehr aufgerufen, NACH dem ich ein -Element in die html-Seite eingefügt habe, da der Fokus auf dieses -Element gesetzt wird.

Wenn ich dann in die html-Seite klicke, hat diese den Fokus wieder und meine doonkeydown(…)-JavaScript-Funktion wird wieder korrekt aufgerufen.

Meine Frage:
wie kann ich kurze Sounds mit JavaScript so abspielen, dass die Webseite den Fokus nicht verliert?

Bereits probiert, aber nicht funktioniert:

  1. mit JavaScript onclick-Ereignisse auf die Webseite simulieren
  2. -Element in ein platzieren
  3. js-Libraries zum Abspielen von Sounds
    (wie z.B. aus www.seabreezecomputers.com)
  4. Aufruf document.getElementsByTagName(„body“)[0].focus();
    funktioniert auch nicht
  5. Aufruf document.addEventListener(„keydown“, doonkeydown1, true); oder document.onkeydown = doonkeydown1;
    funktionieren auch nicht besser…

Für einen Hinweis wäre ich dankbar:
Ilona

Hallo,

deine Idee 4 ist schon nicht schlecht, aber der body ist von Haus aus nicht fokussierbar. Wenn du dagegen vorher irgendwann einmal

document.body.tabIndex = 0;

setzt, kannst du später jederzeit mit

document.body.focus();

arbeiten, um eingebetteten Objekten die Steuerung zu entziehen.

Gruß,

Amica

Hallo Illona,

nur so eine Idee, aber wie wäre es, das embed gleich in die seite zu schreiben mit autoplay=false und dann beim Aufruf des Events das embed per id holen und play() darauf auszuführen?

Gruß, Alex

Vielen Dank für den Hinweis!

ich habe die zwei Funktionen ausprobiert:

document.body.tabIndex = 0;
document.body.focus();

leider ohne Erfolg (Fokus bleibt auf dem QuickTime-Steuerelement zum Abspielen von dem Sound)
(ohne JavaScript-Fehler)
(mit Google Chrome 7.x ausprobiert)

Vielen Dank für den Hinweis!

habe ich probiert.
Wenn ich das Steuerelement in die html-Seite von Anfang an drin habe, dann funktioniert

von Anfang an nicht (doonkeydown(…) wird nicht aufgerufen)

Wenn es nicht zufällig irgendeinen Quicktime-Schalter gibt, mit dem man das verhindern kann, weiß ich auch nicht weiter, sorry.

Hallo Ilona,

Für einen Hinweis wäre ich dankbar:

wie wäre es, wenn Du in der function, die den sound erzeugt, noch ein „document.body.focus()“ aufrufst?

Für Audio-Ausgaben nehme ich player.swf.
Vorteile:
klein und funktioniert als object eingebunden bei allen Browsern. (gibt ja besonders beim FF Probleme bei background-music)

Gruß
Klaus

Vielen Dank für den Hinweis!

document.body.focus()
habe ich bereits probiert.

Ich würde gerne player.swf ausprobieren, aber ich weiss nicht, wie ich mein wav (oder mp3)-Datei in das entsprechende Format umwandeln kann!?

document.body.focus()
habe ich bereits probiert.

und … klappt das?

Ich würde gerne player.swf ausprobieren, aber ich weiss nicht,
wie ich mein wav (oder mp3)-Datei in das entsprechende Format
umwandeln kann!?

player.swf spielt mp3-files

ist freeware und es gibt auch Beispiele, wie der eingebunden wird.
Kann Dir aber auch Beispiel schicken.

Gruß
Klaus

1 Like

Eigentlich sollte das mit dem focus funktionieren. Zumindest würde ich da ansetzen.

Schon mal mit jQuery versucht zu arbeiten und dann das focus ereigniss nach dem hinzufügen des Embeded-Object (was man dann auch über jQuery machen kann) wieder zurückzusetzen.

Gruß Lamer

Sorry, da kann ich dir auch nicht weiterhelfen - mit JavaScript + Sound habe ich noch nichts gemacht, aber vermutlich ist das am einfachsten, wenn du den Sound in einem Flash-Objekt abspielst und das fernsteuerst…

Hallo Ilona,
alle Ideen, die mir zu deinem Problem eingefallen wären, hast du unter der Rubrik „schon probiert“ bereits aufgeführt - und noch mehr.
Mit anderen Worten: Ich kann dir leider nicht helfen.

Trotzdem wünsche ich dir viel Erfolg!
Viele Grüße,
Michael Janßen


www.LilaLupe.de
www.MiJan.de

hallo ilona,

schön, dass du schon so viel ausprobiert hast, bevor du die frage gepostet hast.
ich hab das versucht nachzubauen und bei mir (linux-firefox) behält er den fokus,
wenn ich per javascript den src vom embed-element beschreib:

function dosound( track ) {
if ((track == ‚track01‘) || (track == ‚track02‘))
document.getElementById(‚embedtag‘).src=‚snd.swf?getSound=‘+track+’.mp3’;
return false;
}

gruß & hoffe geholfen zu haben
people

huh!
Danke für den Hinweis!
Ich würde den Code gerne probieren, aber ich habe ‚snd.swf‘ nicht.
Was ist das für Flash-File?
Kann man snd.swf irgendwo downloaden?

Kann man snd.swf irgendwo downloaden?

oha. so weit hab ich natürlich nicht gedacht.

vielleicht tuts ja auch schon, wenn du den src
von deinem embed beschreibst? …direkt das wav…

früher war wer-weiss-was noch mail-basiert(er),
da musst man sowas nicht der ganzen wwwelt posten.
nicht, dass ich ein copyright da drauf hätt
(du kannst das kleine alte ding gern haben!)
aber diese forums-pflicht (und manch anderes bei www!)
geht mir aber leider ein wenig auf den keks.
hast du ne idee für ne privat-nachricht?

gruß
people

1 Like

könntest Du die Datei auf meine E-Mail-Adresse senden, wäre ich dankbar:
[email protected]

DANKE!

Ich habe es ganz leicht geschafft, das Embed-Tag mit type=„application/x-shockwave-flash“ einzubinden.

Und es hat geholfen: das Flash plugin nimmt den Fokus von der html-Seite nicht weg (im Gegensatz zu Quicktime)!
Danke!

DANKE!

gerne, freut mich, wenn das alte proof-of-concept-flash noch verwendung findet. hat dann vielleicht sogar noch den vorteil, dass das (adobe-)flash-plugin im gegensatz zu (apple-)quicktime auch unter linux funktioniert. jetzt geht’s halt nicht mehr auf dem ipad, aber da gibts wahrscheinlich eh kein onkeydown-event - hrhrhr

weiss keine Lösungweiss keine Lösungweiss keine Lösungweiss keine Lösungweiss keine Lösungweiss keine Lösungweiss keine Lösungweiss keine Lösungweiss keine Lösung