>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Неправильная работа событий javascript в firefox 13.0.1 http://forum.mozilla-russia.org/viewtopic.php?id=55457 |
nk > 28-06-2012 11:27:13 |
имею код Выделить код Код:<!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. Перезапускал с отключенными дополнениями - результат тот же. |
Lynn > 28-06-2012 13:28:25 |
Смешивать focus, blur и alert, неудачная идея. Так можно до посинения выяснять что за чем следует. |
nk > 28-06-2012 15:01:47 |
в том то и дело, что при console.log() всё нормально работает, но вот какая то нелогичность получается при вызове alert(): когда элемент теряет фокус прежде чем его получит |
banbot > 28-06-2012 16:00:19 |
Тема перенесена из форума «Поддержка пользователей» в форум «Разработка». |
Lynn > 28-06-2012 17:17:00 |
Ну может быть нелогично, но зачем вообще может понадобиться показывать алерт на фокус и какая в таком случае разница что за чем следует… |
hydrolizer > 28-06-2012 18:19:13 |
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 |