Объясните пожалуйста что происходит с фокусом в Chrome?
window.onfocus = function() { document.getElementById("input").focus(); } document.getElementById("input").onfocus = function() { console.log("Сработал обработчик фокуса на поле"); } В FF обработчик фокуса на поле срабатывает 1 раз при фокусировке на окне. В Chrome обработчик фокуса на поле срабатывает 2 раза при фокусировке на окне (при переходе с др. окна или вкладки). Чтобы увидеть эффект нужно открыть https://jsfiddle.net/6bnspf5q/1/ потом кликнуть в пустое место рядом с полем (в окошке result), потом перейти на другую вкладку или в другое окно, потом вернуться и обработчик фокуса на поле сработает 2 раза! Версия №1 Сначала фокусировка на окне вызывает фокус на поле, после чего срабатывает обработчик фокусировки на поле и выводит сообщение. А потом ещё раз срабатывает обработчик фокусировки на поле, но уже как бы по настоящему! :blink: Версия №2 После срабатывания моего кода, Chrome по своей инициативе в наглую подставляет фокус куда ему взбрендилось. |
var timerID; window.onfocus = function() { clearTimeout(timerID); timerID = setTimeout(function() {document.getElementById("input").focus();},100); } document.getElementById("input").onfocus = function() { console.log("Сработал обработчик фокуса на поле"); } |
Deff,
Спасибо за помощь, но не мог бы ты пояснить что происходит? С таймером работает как надо, но в чём проблема то была? |
Momon,
Есть иное свойство: if ('visibilityState' in document) { alert ('Да поддерживает!'); alert('status вкладки: ' + document.visibilityState) } |
Цитата:
|
Deff,
Спасибо за объяснение. |
Часовой пояс GMT +3, время: 05:49. |