Определение момента, когда iframe получает или теряет фокус

Как правильно определять, когда iframe получает или теряет фокус (т.е. получит или не получит события клавиатуры)? Следующее не работает в Fx4:

var iframe = /* my iframe */;
iframe.addEventListener("focus", function() { /* never gets called */ }, false);
13
задан Brian Tompsett - 汤莱恩 3 October 2019 в 22:03
поделиться

1 ответ

Компактная функция, которая принимает обратные вызовы, которые Вы хотите выполнить, когда iframe получает или теряет фокус.

/* eslint-disable no-unused-vars */
export default function watchIframeFocus(onFocus, onBlur) {
  let iframeClickedLast;

  function windowBlurred(e) {
    const el = document.activeElement;
    if (el.tagName.toLowerCase() == 'iframe') {
      iframeClickedLast = true;
      onFocus();
    } 
  }
  function windowFocussed(e) {
    if (iframeClickedLast) {
      iframeClickedLast = false;
      onBlur();
    } 
  }
  window.addEventListener('focus', windowFocussed, true);  
  window.addEventListener('blur', windowBlurred, true);
}
0
ответ дан 1 December 2019 в 18:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: