Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№128-06-2012 11:27:13

nk
Участник
 
Группа: Members
Зарегистрирован: 28-06-2012
Сообщений: 2
UA: Firefox 13.0

Неправильная работа событий javascript в firefox 13.0.1

имею код

Выделить код

Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TestDate</title>
</head>
<body>
    <button>asdsa</button>
    <input id="input" type="text" value="sdasd">
    </input>
    <script type="text/javascript">
        var input = document.getElementById("input");
        input.addEventListener('blur', function() {
            alert('onblur');
            return true;
        }, false);
        input.addEventListener('focus', function() {
            alert('onfocus');
            return true;
        }, false);
        input.addEventListener('change', function() {
            alert('onchange');
            return true;
        }, false);
    </script>
</body>
</html>

При нажатии на текстовое поле сначала вызывается onblur, потом onfocus. Само поле при этом фокус не получает, следовательно onchange вообще не вызовется. Также эти дейсвия работают при нажначении их как аттрибутов тэга. Из дополнений установлен яндекс-бар, firebug, web developer, переводчик tran. Перезапускал с отключенными дополнениями - результат тот же.

Отсутствует

 

№228-06-2012 13:28:25

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
UA: Firefox 13.0
Веб-сайт

Re: Неправильная работа событий javascript в firefox 13.0.1

Смешивать focus, blur и alert, неудачная идея. Так можно до посинения выяснять что за чем следует.
Сделайте лучше console.log


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№328-06-2012 15:01:47

nk
Участник
 
Группа: Members
Зарегистрирован: 28-06-2012
Сообщений: 2
UA: Firefox 13.0

Re: Неправильная работа событий javascript в firefox 13.0.1

в том то и дело, что при console.log() всё нормально работает, но вот какая то нелогичность получается при вызове alert(): когда элемент теряет фокус прежде чем его получит

Отсутствует

 

№428-06-2012 16:00:19

banbot
Moderator
 
Группа: Moderators
Зарегистрирован: 23-12-2007
Сообщений: 5284

Re: Неправильная работа событий javascript в firefox 13.0.1

Тема перенесена из форума «Поддержка пользователей» в форум «Разработка».


Do you feel lucky, punk?

Отсутствует

 

№528-06-2012 17:17:00

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
UA: Firefox 13.0
Веб-сайт

Re: Неправильная работа событий javascript в firefox 13.0.1

Ну может быть нелогично, но зачем вообще может понадобиться показывать алерт на фокус и какая в таком случае разница что за чем следует…


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№628-06-2012 18:19:13

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 14.0

Re: Неправильная работа событий javascript в firefox 13.0.1

nk
Здесь последовательность входов-выходов из обработчиков, и передача фокуса алерту при его (алерте) возникновении формирует своеобразный стек:

Выделить код

Код:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TestDate</title>
</head>
<body>
    <button>asdsa</button>
    <input id="input" type="text" value="sdasd">
    </input>
    <script type="text/javascript">
        var input = document.getElementById("input");
        input.addEventListener('blur', function() {
          try
          {
            console.log("onblur enter");
            alert('onblur');
            return true;
          }
          finally
          {
            console.log("onblur exit");
          }
        }, false);
        input.addEventListener('focus', function() {
          try
          {
            console.log("onfocus enter");
            alert('onfocus');
            return true;
          }
          finally
          {
            console.log("onfocus exit");
          }
        }, false);
        input.addEventListener('change', function() {
                console.log("onchange");
            alert('onchange');
            return true;
        }, false);
    </script>
</body>
</html>

Последовательность:

onfocus enter

(обработчик срабатывает, вызывает алерт, из-за чего фокус сразу же теряется)

onblur enter

(обработчик срабатывает, вызывает алерт - onfocus из-за модальности алерта ждет. Закрываем алерт)

oblur exit

(управление возвращается в onfocus, выпускает алерт на onfocus)

onfocus exit

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]