Объясните пожалуйста что происходит с фокусом в 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, время: 09:44. |