Функция trigger () jQuery ведет себя не так, как я ожидал, когда я использую ее из консоли разработчика в Chrome / Firefox, но, как ни странно, она работает нормально в IE.
Вот простой пример:
function test() {
$("body").on("focus", ".text-input", function(e) {
console.info("focus")
})
$(".text-input").trigger("focus")
$(".text-input").trigger("focus")
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type = "text" class = "text-input" />
<button onclick = "test()">Test</button>Если я просто открою его и нажму кнопку, я увижу два «фокуса», напечатанные на консоли, во всех трех браузерах, как и ожидалось.
Если вместо этого я перезагружаю страницу и выполняю test () из консоли, я все еще вижу 2 «фокуса» в IE, но Chrome и Firefox печатают только один. Любое дальнейшее выполнение test () выводит два фокуса во всех браузерах.
Кто-нибудь знает, что происходит?
Версии браузера:
Хром 67.0.3396.99
Файерокс 57.0.4
IE 11
Очевидно, это просто доказательство концепции. Я впервые заметил это на работе, наши текстовые поля имеют метки, которые меняются в зависимости от того, пустое поле или нет. Во время тестирования выполнение некоторых функций с консоли не изменяло свое состояние должным образом ... но выполнялось во второй раз.



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


Это похоже на вопрос X / Y. Есть ли какая-то конкретная причина, по которой вам нужно это, довольно странное поведение, чтобы работать?