Hallo!
Das Thema wurde hier bereits behandelt, aber nicht zu Ende gebracht:
http://forum.de.selfhtml.org/archiv/2005/11/t119416/
Ich habe ein Chat-Fenster welches beim Eingang neuer Nachrichten einen Sound abspielen soll. Dies soll aber nur erfolgen, wenn das Fenster selbst keinen Focus mehr besitzt.
Nun habe ich folgendes realisiert:
############################################
// Sound switch
var play_sound = false;
function sound_on()
{
play_sound = true;
}
function sound_off()
{
play_sound = false;
}
############################################
Dann wenn ein Nutzer ein Kommentar absendet:
############################################
function sendComment()
{
play_sound = false;
//...
insertNewContent
//...
}
############################################
Als letztes wird beim Darstellen neuer Kommentare alle paar Sekunden geprüft und bei Bedarf abgespielt wie folgt:
############################################
function insertNewContent(liName, liText, liTime, last_id)
{
//...
// play sound
window.onblur = sound_on;
window.onfocus = sound_off;
if ( play_sound )
{
if (navigator.appName.indexOf ("Microsoft") !=-1)
{
document.getElementById("chatsound").Play();
setTimeout('document.getElementById("chatsound").Play();', 1500);
}
else
{
document.embeds[0].Play();
setTimeout('document.embeds[0].Play();', 1500);
}
}
//...
}
############################################
Unter anderem habe ich das hier gefunden:
http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
Im IE scheint das ganze zu funktionieren. Beim FF ist der Sound dagegen an, sobald ich das 2. Kommentar absende. Und er bleibt auch an. Obwohl ich ja noch extra in sendComment() den Sound abschalte, wenn man eigene Kommentare absendet. D.h. onblur wird immer ausgeführt, auch wenn das Fenster aktiv ist. Erkennt jemand meinen Fehler oder hat der FF grundsätzlich ein Problem mit diesem Konstrukt?
Gruß
Marc