Следующий код из вашего текущего примера:
<input id="i" type="text" autofocus onfocus="alert(1)">
<script type="text/javascript">
document.getElementById('i').addEventListener('focus', function() {
alert(2);
}, false);
</script>
собирается вызвать бесконечный цикл оповещений, идущий от 1
до 2
[Eidt]
потому что: (это происходит только в браузерах, поддерживающих autofocus
)
вход получает автофокус, запускает событие, которое запускает предупреждение, предупреждение захватывает фокус, нажимает ОК, ввод захватывает фокус, событие фокусировки запускает новое событие, вызывающее теперь два разных предупреждения (DOM полностью загружен, поэтому новое событие добавляется с другим предупреждением), оба оповещения захватывают фокус, нажимают «ОК», нажимают «ОК», ввод захватывает фокус, запускает новое событие, теперь запускаются два разных оповещения, оповещение захватывает фокус, нажимает «ОК», следующее оповещение захватывает фокус, нажимает «ОК», ввод захватывает фокус, запускает оба события, оповещение захватывает фокус, нажмите «ОК», следующее предупреждение захватывает фокус, нажмите «ОК», ввод захватывает фокус, запускает оба события, предупреждение захватывает фокус, нажимает «ОК», следующее предупреждение захватывает фокус, нажимает «ОК», ввод захватывает фокус, запускает оба события, предупреждение захватывает фокус, нажимает «ОК», далее предупреждение захватывает фокус, нажимает ОК, ввод захватывает фокус, запускает оба события, ввод захватывает фокус, запускает оба события, предупреждение захватывает фокус, нажимает ОК, следующее предупреждение захватывает фокус, нажимает ОК, ввод захватывает фокус, запускает оба события, ввод захватывает фокус, запускает оба события, предупреждение захватывает фокус, нажимает ок, следующее предупреждение захватывает фокус, нажимает ок, в установить фокус, запустить оба события, захватить фокус ввода, активировать оба события, сфокусировать предупреждение, щелкнуть «ОК», следующее предупреждение захватить фокус, нажать «ОК», фокус ввода захватить, активировать оба события ...
Текстовое описание бесконечного процесса FTW! ....? : P
[/ править]
В ваших предыдущих примерах с применением двух автофокусов кажется, что последний будет выполнен, как в примере, который я прикрепил внизу. Я также добавил способ добавления события фокуса к каждому входу на основе имени класса ... Не уверен, что вы ищете это, но хотя это может помочь.
JSFiddle Пример события onfocus