У меня есть этот фрагмент:
function focusChanged(event)
{
// setTimeout(function() {
console.log('focus now: ' + document.activeElement);
console.log(document.activeElement.matches(':focus'));
//}, 0);
}
<div class="editor one" contenteditable="true" onfocus="focusChanged(event)">click here to focus</div>
Без тайм-аута возвращается следующее значение false
:
document.activeElement.matches(':focus')
false
Консоль не открыта ( как указано в document.activeElement.matches (: focus) имеет значение false. почему это так? )
Это происходит в WebKit / Safari. Кто-нибудь может объяснить, почему это происходит? Спасибо!
РЕДАКТИРОВАТЬ:
Может быть, еще немного фона: я обнаружил вышеупомянутую проблему только после столкновения с проблемой jQuery * .is(':focus')
. У меня есть старый проект, который все еще использует jQuery v1.9.1.
Этот код: $('.editor').is(':focus')
отлично работал годами. Только с последним обновлением macOS Catalina 10.15.4 это начало возвращать false
, даже когда у div есть фокус. Затем я попытался использовать ванильное решение JS и столкнулся с вышеуказанной проблемой.