Должны ли сначала размыться или сгореть огонь? - PullRequest
7 голосов
/ 04 августа 2011
<!doctype html>
<body>
<input onblur="alert('b');">
<button onmousedown="alert('m');">a</button>
</body>

По какой-то причине размытие сначала срабатывает в FF / IE (но mousedown запускается в первую очередь для Chrome / Safari).

И все же, когда мы изменим код на это:

<!doctype html>
<body>
<input onblur="document.title+='b';">
<button onmousedown="document.title+='m';">a</button>
</body>

Теперь по какой-то причине mousedown запускается в первую очередь для всех браузеров.

1) Чем может быть объяснено это отклонение?

2) Основано на спецификациях W3C, которые должныбыть стандартным поведением?

Ответы [ 2 ]

10 голосов
/ 04 августа 2011

Итак, для этого теста я сделал скрипку

<input onblur="document.getElementById('msg').innerHTML+=new Date().getTime()+' - blur<br/>'">
<button onmousedown="document.getElementById('msg').innerHTML+=new Date().getTime()+' - md<br/>'">a</button>
<div id="msg">---<br/></div>

В Windows XPsp3, в Fx5, IE8, Opera 11, Safari5, Chrome 13 сначала ВСЕ mousedown, размытие после

ОБНОВЛЕНИЕ: ИСКЛЮЧИТЬ, когда вы используете оповещение. Вы не можете рассчитывать на то, что все работает так, как вы хотите, если вы поместите предупреждение куда-нибудь.

Например, некоторые (более старые) браузеры переходят в бесконечный цикл, если вы предупреждаете об ошибке onblur, а затем пытаетесь сфокусировать поле, вызывающее сбой, которое затем размывает пустое следующее поле

1 голос
/ 04 августа 2011

О, черт возьми, это бесконечная история. Я не хочу знать, сколько часов я потратил, чтобы правильно понять это поведение. Как вы упомянули, он ведет себя по-другому, поэтому на самом деле нет «правильного». Однако я не очень осведомлен о спецификации W3C об этом конкретном экземпляре (если есть только один actal), но, к сведению, вы должны создать некоторую логику, чтобы все запускалось в правильном порядке. Это довольно отвратительно.

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