Jquery - 拦截在 iframe 内点击的链接

Posted

技术标签:

【中文标题】Jquery - 拦截在 iframe 内点击的链接【英文标题】:Jquery - intercept links clicked inside an iframe 【发布时间】:2011-02-13 18:41:21 【问题描述】:

我正在尝试拦截点击页面的链接,包括 iframe 中的链接。这是我拥有的代码,但它不起作用。有什么想法我需要做什么?

$("#container").delegate('a', 'click', function(e) 
//do stuff

Container 是 iframe 中 div 的 id。

提前感谢您的任何建议

【问题讨论】:

【参考方案1】:

您需要到达<iframe> 内部并将委托设置在那里,您可以这样做:

$('#myiframe').contents().find("#container").delegate('a', 'click', function(e) 
  //do stuff

编辑 - Mailslut 在下面提出了一个很好的观点,如果 iframe 不在同一个域(和端口)上,你不能做这样的事情。如果是这种情况,并且您想了解更多原因,出于安全原因,请read about the same-origin policy。

【讨论】:

IFRAME 中的页面是否来自不同的域?如果是这样,你真的应该忘记能够做到这一点。 该页面可以是任何东西。它很可能是另一个内部站点,因此我们的站点是 our-site.blah.com,而 iframe 中的链接很可能是 something-else.blah.com - 这会起作用吗? @Kaskade - 如果您从 blah.com 运行主页并且 iframe 是 something-else.blah.com 它会起作用,因为它是当前域,但兄弟姐妹不会...因为说 google.comyourbank.com 的兄弟姐妹,com 域的两个子。 有什么可以为兄弟姐妹做的吗,我怀疑 90% 的时间都是兄弟姐妹。【参考方案2】:

为什么不在 iframe 里面添加事件监听器,然后调用父/opener 来通知事件呢。

如果 iframe 的内容位于不同的域中,您将无法执行此操作,因为它被归类为“点击劫持”,这是一个很大的安全威胁。

【讨论】:

以上是关于Jquery - 拦截在 iframe 内点击的链接的主要内容,如果未能解决你的问题,请参考以下文章

拦截点击 iframe 中的内容

jQuery拦截表单提交到参数字符串

JQuery 可拖动到 iframe 之外。可放置在 iframe 内

jQuery - 聚焦在 iframe 内?

在 iframe 内启用可拖动的 Jquery 滚动

检查 iframe 内是不是加载了 Vimeo 视频 - jquery