拦截点击 iframe 中的内容
Posted
技术标签:
【中文标题】拦截点击 iframe 中的内容【英文标题】:Intercept click on content in an iframe 【发布时间】:2021-09-21 16:14:56 【问题描述】:我有一个iframe
,它引用了一个提供包含 Flash 广告的页面的外部 URL。
我需要跟踪客户点击这些广告的频率。
我正在采取的方法是在iframe
上渲染一个div
元素。这允许我拦截点击事件,但是我需要将该点击传递给iframe
。这可以使用 javascript 实现吗?
【问题讨论】:
聪明的主意。但将它们传递下去可能是不可能的。 你如何拦截带有 div 元素的点击?我的点击没有被拦截。 【参考方案1】:不,这是不可能的。您无法在 javascript 中模拟 真实 点击,您只能触发 click 事件。
【讨论】:
即使可以,由于跨域策略,它也行不通。 有没有办法拦截重定向事件/请求?如果 iframe 重定向到另一个页面,有没有办法监听?【参考方案2】:我不认为这也是可能的
但是,假设点击将用户重定向到广告网站,您可以使用重定向拦截用户点击。使用一些唯一的广告 ID 将链接更改为您自己的服务器上的某个脚本。注册点击并将用户重定向到广告页面。
另一种可能性是使用这种技术来加载 iframe 的内容,这样您就知道查看广告的客户数量。但这当然可能是您的广告客户不喜欢/不想要的广告方案。
【讨论】:
我知道已经有一段时间了,但是如何在不使用点击事件的情况下拦截重定向(因为这不适用于 iframe 和外部域)? 假设广告点击转到 URL_AD,您将其替换为转到您的脚本/服务器 URL_ME,然后使用从脚本重定向到 URL_AD。你会得到click-> URL_ME(注册点击)-> URL_AD。可能不太理想,但至少您可以点击广告进行注册【参考方案3】:您无法通过任何合法方式传递点击,并且如果您试图以任何方式伪造它,您将遇到跨域问题。而且我肯定会远离任何看起来像 clickjacking 解决方案的东西 - 它肯定会停止工作(并且感觉也很邪恶)。
您可能能够破解某些东西,这取决于它必须有多准确。这将涉及跟踪用户将鼠标放在横幅区域然后离开页面时发生的事件顺序(推断他们点击了广告)。你会错过一些,也可能会发现一些误报。
它会像这样工作:
-
将覆盖 div 留在原处
onMouseOver,隐藏 div 并设置
onbeforeunload 事件处理程序
通过 AJAX 帖子(或类似帖子)注册“点击”
当鼠标移出横幅区域时,表示他们没有点击广告,因此请再次显示 div 并删除事件处理程序
我估计你会得到大约 80-90% 的准确率,但你将不得不在很多浏览器上进行测试。它还假设广告加载到同一个窗口而不是新窗口。如果它加载到一个新的,那么我认为它会更难。
【讨论】:
以上是关于拦截点击 iframe 中的内容的主要内容,如果未能解决你的问题,请参考以下文章