Событие Javascript onFocus постоянно запускается в Google Chrome - это ошибка? - PullRequest
3 голосов
/ 17 ноября 2011

Я написал небольшую функцию javascript, которая проверяет наличие cookie-файлов при запуске onFocus в текстовом поле ввода формы.

Если файл cookie найден, появляется диалоговое окно с приветствием человека, возвращающегося на сайт.

Но в Chrome каждый раз, когда диалог закрывается, появляется новое. Я полагаю, это потому, что текстовое поле все еще технически «сфокусировано».

Но эта проблема не возникает в Firefox или IE9.

Я решил это в Chrome, добавив строки, которые я сейчас прокомментировал. Но я хотел бы знать, считается ли это поведение ошибкой или нормальным поведением, и если это нормально, то почему другие браузеры ведут себя по-разному?

Вот пример кода JavaScript:

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

//  if(checked == 0) {

        if(checkIt == 'logged_in') {
            alert('Welcome back to CIA headquarters.');
            //return true;
        }
    //}
        //checked++;
}

А вот HTML:

<form id="form1" name="form1" action="" method="get">
<input type="text" name="username" id="username" value="smeegle" size="15" onfocus="checkCookie();">

и т.д ...

1 Ответ

4 голосов
/ 17 ноября 2011

Поле теряет фокус (), когда появляется предупреждение, chrome возвращает фокус на вход, когда предупреждение закрыто, поэтому onfocus срабатывает снова.

Другие браузеры могут дать фокус окнупосле закрытия оповещения, так что onfocus не сработает снова.Я бы не назвал это ошибкой, это другое поведение.

Решение:
Убрать фокус перед предупреждением ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...