JavaScript Aktives Element ermitteln

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.503
Hi,

Ich habe mit Hilfe von 'Server-Sent Events' eine kleine Chatbox programmiert. Nun ist es so, dass die Chatbox bei jeder neuer Nachricht nach unten gescrollt wird. Dies sollte allerdings nicht passieren, wenn sich der Besucher gerade einen Chat Eintrag durchließt. Ein schöner Trigger wäre hier, wenn die Scrollleiste gerade genutzt wurde, bzw. Das Element irgendwie sonst angeklickt wurde und aktiv ist.

Ich hatte mir das so vorgestellt
Code:
if(document.activeElement.id != 'msg_container') {
    document.getElementById('chat_container').scrollTop = document.getElementById('chat_container').scrollHeight;
}

Dies geht aber leider nicht, da die Funktion .activeElement offensichtlich was anderes macht.

Habt ihr da eine Idee?
 
https://developer.mozilla.org/en-US/docs/Web/API/document.activeElement

Das activeElement gibt das Textfeld zurück, das gerade angeklickt wurde. Details siehe im Link oben.
Testen kann man das hier: http://jsfiddle.net/b7jjy6j6/
Wenn du eines der beiden Textfelder anklickst, siehst du in der Konsole spätestens nach 250ms die ID des Feldes. Klickst aber stattdessen auf das div oder sonst wo hin, wird zumindest im Firefox nichts zurückgegeben.

=> Kann es sein, dass dein msg_container kein Textfeld ist? Versuch mal msg_container in chat_container zu ändern, sofern chat_container eine textarea ist.

Alternativ kannst du mit Maus-Events arbeiten. Beim mouseenter einfach ein boolean auf true setzen und dies abfragen. Beim mouseleave diesen boolean einfach wieder auf false setzen.
 

Ähnliche Themen

JavaScript Zeitproblem?
Antworten
7
Aufrufe
1.293
Zurück
Oben