У меня есть 2 элемента. Первый элемент имеет событие blur
, а второй элемент имеет событие mousedown
. Событие mousedown
для второго элемента возвращает фокус первому элементу, но blur
для первого элемента срабатывает по какой-то причине, даже если первый элемент не был сфокусирован перед mousedown
ингом второго элемента.
Почему это происходит? Является ли это (каким-то) желаемым поведением или это какая-то ошибка?
<!DOCTYPE html>
<html>
<head>
<title>Bug?</title>
</head>
<body>
<input type="text" />
<br /><br />
<button>Click me to focus on the input</button>
<br /><br />
<input type="text" />
<script type="text/javascript">
document.getElementsByTagName('input')[0].addEventListener('blur', function(e){
console.log('blur', e);
});
document.getElementsByTagName('button')[0].addEventListener('mousedown', function(e){
console.log('mousedown', e);
document.getElementsByTagName('input')[0].focus();
});
</script>
</body>
</html>
mousedown
, а неclick
? - person George   schedule 29.06.2017focus
к своей кнопке, и вы поймете. Кстати, все эти события являются событиями по умолчанию, и они уже существуют в компонентах. - person Edwin   schedule 29.06.2017focus->mousedown->blur(input)->focus->mouseup
(*это только у вас еще нет фокуса на mousedown - если у вас есть фокус, то первый фокус отсутствует) - person Edwin   schedule 29.06.2017