3 Stimmen

Javascript onFocus Ereignis feuern kontinuierlich in Google Chrome - Ist es ein Fehler?

Ich habe eine kleine JavaScript-Funktion geschrieben, die überprüft, ob ein Cookie vorhanden ist, wenn onFocus in einem Eingabefeld für Textformulare ausgelöst wird.

Wenn das Cookie gefunden wird, wird ein Dialogfeld geöffnet, das die Person auf der Website willkommen heißt.

In Chrome wird jedes Mal, wenn ein Dialog geschlossen wird, ein neuer geöffnet. Ich nehme an, dass dies daran liegt, dass das Textfeld technisch gesehen immer noch 'fokussiert' ist.

Dieses Problem tritt jedoch nicht in Firefox oder IE9 auf.

In Chrome habe ich es gelöst, indem ich die Zeilen hinzugefügt habe, die ich derzeit auskommentiert habe. Aber ich würde gerne wissen, ob dieses Verhalten als Fehler oder normales Verhalten betrachtet wird und falls es normal ist, warum sich die anderen Browser anders verhalten?

Hier ist ein Beispiel für den JavaScript-Code:

//var checked = 0;
var checkIt = getCookie('cia_db');
function checkCookie() {

//  if(checked == 0) {

        if(checkIt == 'logged_in') {
            alert('Willkommen zurück in der CIA-Zentrale.');
            //return true;
        }
    //}
        //checked++;
}

Und hier ist der HTML-Code:

usw...

5voto

Dr.Molle Punkte 115139

Das Feld wird den Fokus verlieren, wenn das Alert erscheint, Chrome gibt den Fokus zurück an das Eingabefeld, wenn das Alert geschlossen wird, so dass onfocus erneut ausgelöst wird.

Andere Browser geben möglicherweise den Fokus nach dem Schließen des Alerts an das Fenster zurück, so dass onfocus nicht erneut ausgelöst wird. Ich würde es nicht als Bug bezeichnen, es ist ein unterschiedliches Verhalten.

Lösung:
Entferne den Fokus vor dem Alert()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X