Also ich teste jetzt den Focus in dem ich einem Bild einen Rand verschaffe, sobald der Ton an ist. Dabei ist mir aufgefallen, dass die Position zum Ausschalten des Tones entscheident ist im FF:
############################################
function sendComment()
{
setTimeout("document.forms['chatForm'].submit.disabled = true;", 0);
setTimeout("document.forms['chatForm'].submit.disabled = false;", refresh_time);
//currentChatText = encodeURIComponent(document.forms['chatForm'].elements['chatbarText'].value);
currentChatText = escape(document.forms['chatForm'].elements['chatbarText'].value);
if (currentChatText != '' & (httpSendChat.readyState == 4 || httpSendChat.readyState == 0))
{
param = 'act=add&c='+ currentChatText;
httpSendChat.open("POST", ChatActionurl, true);
httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
httpSendChat.onreadystatechange = handlehHttpSendChat;
// Timeout Prevention
sendTimeout = setTimeout("ajaxTimeout(2);", (refresh_time/2));
httpSendChat.send(param);
document.forms['chatForm'].elements['chatbarText'].value = '';
document.forms['chatForm'].elements['chatbarText'].focus();
}
sound_off();
}
############################################
Ich habe jetzt nicht durchgetestet welche Funktionen den FF beeinflusst, aber eine davon sorgt dafür, dass onblur aktiv wird. Mit der Positionierung in die letzte Zeile klappt es nun.
ABER es gibt noch einen Haken. Und zwar bei Wechsel der Fenster ist es entscheident, ob der Focus auf der Seite liegt oder im Textfeld des Formulars. Solange der Focus im Textfeld liegt (was ich ja will, damit der User nicht extra das Feld anklicken muss), erfolgt keine Änderung beim Focus. Erst wenn man sonst wo auf der Seite etwas anklickt und dann das Fenster wechselt ist onblur aktiv und schaltet den Sound ab.
Dabei habe ich den ganze Vorgang auch im IE getestet, der die ganze Sache wieder anders interpretiert. Hier verliert das Fenster erst dann seinen Focus, wenn ich zurück zum Chat komme. Also eigentlich falsch herum. Sende ich ein Kommentar ab ist der Sound wieder aus, aber wenn ich das Fenster wechsel ist onblur nicht aktiv. Tatsächlich müsste ich jetzt hingehen das Fenster wechseln, dann zurück zum Chat, um onblur zu aktivieren und dann kann ich erst das Fenster wechseln, um dann bei neuen Einträgen informiert zu werden.
Dabei gibt es dann noch ein Phänomen. Da ich erst später herausgefunden hatte, dass ein alert() den focus beeinflusst und dadurch im FF eine Unendlichschleife resultierte entschied ich mich dafür allgemein nach allen Alerts auf der Seite den Ton noch mal nachträglich auszuschalten. Aber im IE greift das nicht. Ich sehe, dass onblur den Ton aktiviert hat. Nun klicke auf den Zitat-Button der nun eine Fehlermeldung resultiert, weil ich keinen Text markiert habe, aber danach schaltet sich der Ton nicht ab, obwohl ich es so eingestellt habe:
############################################
else
{
alert('Wählen Sie einen Text von der Seite und versuchen es noch einmal');
sound_off();
}
############################################
Das konnte ich in den Griff kriegen, in dem ich einen Timeout verwendet habe:
############################################
setTimeout("sound_off();", 100);
############################################
Es gibt aber immer mehr Probleme, umso weiter ich das teste. Manchmal setzt der IE bereits das blur, wenn ich beim Öffnen der Seite nur irgendwo im Chat hinklicke. Was ja auch falsch ist. Manchmal klappt es dagegen.
Das entwickelt sich langsam zu einem Lottospiel :(