如何在单击iframe(JavaScript)时防止窗口失去焦点

问题描述 投票:0回答:1

我有一个Web应用程序,当用户离开活动窗口时,需要登录。我一直在尝试为该窗口使用blur事件,并且它运行良好,但是不幸的是,当我单击该窗口上的iframe时,主窗口失去了焦点并运行了我的日志记录代码。

我已经尝试使所有框架元素(document.getElementsByTagName(“ IFRAME”))处于模糊状态,并对其进行遍历以查看它们是否具有焦点(iframe.contentDocument.hasFocus()),但即使返回,它似乎仍然返回false如果我在iframe中单击。

是否有任何方法可以使主窗口不将iframe注册为失去焦点?除此以外,是否有任何方法可以检测到iframe具有焦点并停止运行日志记录代码?还是有人可以想到另一种方法来解决这个问题?

javascript iframe onblur onfocus
1个回答
0
投票

您可能希望查看事件传播。我认为您可能可以在将iframe传递给iframe之前捕获iframe上的所有点击,并立即设置状态以注册iframe现在具有焦点,因此,如果这样,请勿将其记录为失去焦点的窗口。像

//click on iframe
onClick=()=>{
  iFrameFocus = true;
    setTimeout(()=>{
      iFrameFocus = false;
  }, 10)
}

然后在另一个记录日志的功能中,只需在检查之前检查iFrameFocused变量。

只是跟踪,事件冒泡是默认设置,这意味着事件从嵌套最多的元素(可能是iframe)开始。如果使用此方法,则可能需要将此行为更改为事件捕获。该博客的good description of how you could do that in javascript

© www.soinside.com 2019 - 2024. All rights reserved.