首页 > web前端 > js教程 > 如何可靠地检测跨域 iframe 内的点击?

如何可靠地检测跨域 iframe 内的点击?

Barbara Streisand
发布: 2024-11-30 15:30:11
原创
986 人浏览过

How Can I Reliably Detect Clicks Inside a Cross-Domain Iframe?

如何检测 Iframe 内的用户点击

挑战:

确定用户是否在 iframe 内单击可能具有挑战性,尤其是当 iframe 源自不同域时(称为跨域 iframe)。

解决方案:

要检测 iframe 内的点击,可以采用巧妙的解决方法,使用位于直接上方的不可见 div iframe 的边界。当用户点击 iframe 内的任意位置时,div 会拦截点击事件并将其转发到 iframe。

实现:

在主文档中,创建以下内容elements:

<div>
登录后复制

然后,插入以下 JavaScript代码:

const message = document.getElementById("message");

window.focus();

window.addEventListener("blur", () => {
  setTimeout(() => {
    if (document.activeElement.tagName === "IFRAME") {
      message.textContent = "clicked " + Date.now();
      console.log("clicked");
    }
  });
}, { once: true });
登录后复制

说明:

  1. window.focus() 确保主文档具有焦点以启用模糊事件侦听器。
  2. window.addEventListener("blur", ...) 捕获模糊事件,该事件在焦点移离主窗口时发生document.
  3. 在模糊监听器中,setTimeout 用于稍微延迟事件处理,以确保浏览器已更新其内部状态。
  4. document.activeElement 检查是否有活动元素在main document 是一个 IFRAME,表明点击发生在 iframe 内。
  5. 如果确认,#message div 的 textContent 将更新为当前时间戳,并且将显示 console.log 消息。

此技术提供了一种可靠的方法来跟踪用户是否在 iframe 内单击,即使是跨域也是如此。

以上是如何可靠地检测跨域 iframe 内的点击?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板