в javascript, когда я получаю событие фокуса, как я могу определить, какой элемент потерял фокус? Я пытаюсь избежать добавления обработчика событий onblur ко всем элементам моей веб-страницы.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


@pbrodka: свойство target / srcElement будет относиться к элементу с фокусом для событий onfocus
Навскидку, я не вижу способа избежать этого, кроме onblur, или, если все объекты, которые вам нужны, имеют методы фокуса, вы могли бы вместо этого сохранить ссылку на этот объект. Также возможно, что всплытие событий может вывести вас из тюрьмы.
все это похоже на запах кода - возможно, вам нужно описать проблему более подробно
Сложно это. Вы не можете использовать делегирование событий, чтобы узнать, какой элемент управления последним произвел размытие, поскольку фокус / размытие не всплывают. Было несколько попыток «исправить» это, но они содержат ошибки и не поддерживают кроссбраузерность. Могу я спросить, зачем вам эта информация, возможно, есть альтернативное решение.
К сожалению, событие onblur не всплывает, иначе вы могли бы обработать его на уровне окна, чтобы всегда знать, когда элемент потерял фокус.
В настоящее время я считаю, что будет сложно обойтись, как вы говорите, без добавления обработчика события onblur ко всем элементам (действительно неприятное решение ;-).
Самое простое решение - написать функцию, которая просматривает все формы, а затем все элементы внутри формы и устанавливает обработчик onblur для каждого (который, вероятно, вызовет некоторую глобальную функцию). Этот обработчик получит событие, и это событие будет содержать информацию, которую вы ищете.
Таким образом, вам просто нужно вызвать этот метод один раз в body.onload, и он будет работать независимо от того, насколько сложен ваш документ.
Единственный недостаток заключается в том, что вам нужно будет вызвать его, если вы динамически добавляете формы в текущий документ. В этом случае вы должны убедиться, что не устанавливаете обработчик снова (иначе вы получите ложные повторяющиеся события).
За исключением того, что оператор сказал: «Я пытаюсь избежать необходимости помещать событие onblur для всех элементов на моей веб-странице».
Можно делегировать события focus и blur, если вы последуете совету PPK, здесь: http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
Это звучит ненадежно. Вам нужно будет сохранить ссылку на каждый элемент в какой-то глобальной переменной. IE может протекать как решето.