Основываясь на ответе Пола Дрейпера, я создал решение, которое работает непрерывно, когда у вас есть Iframes, которые открывают другие вкладки в браузере. Когда вы возвращаете страницу, чтобы оставаться активным, чтобы обнаружить щелчок по рамке, это очень распространенная ситуация:
focus();
$(window).blur(() => {
let frame = document.activeElement;
if (document.activeElement.tagName == "IFRAME") {
// Do you action.. here frame has the iframe clicked
let frameid = frame.getAttribute('id')
let frameurl = (frame.getAttribute('src'));
}
});
document.addEventListener("visibilitychange", function () {
if (document.hidden) {
} else {
focus();
}
});
Код прост: событие размытия обнаруживает потерю фокуса при щелчке по фрейму и проверяет, является ли активный элемент фреймом (если у вас есть несколько фреймов, вы можете знать, кто был выбран), такая ситуация часто возникает, когда вы есть рекламные рамки.
Второе событие вызывает метод фокусировки при возврате на страницу. используется событие изменения видимости.