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.com
是 yourbank.com
的兄弟姐妹,com
域的两个子。
有什么可以为兄弟姐妹做的吗,我怀疑 90% 的时间都是兄弟姐妹。【参考方案2】:
为什么不在 iframe 里面添加事件监听器,然后调用父/opener 来通知事件呢。
如果 iframe 的内容位于不同的域中,您将无法执行此操作,因为它被归类为“点击劫持”,这是一个很大的安全威胁。
【讨论】:
以上是关于Jquery - 拦截在 iframe 内点击的链接的主要内容,如果未能解决你的问题,请参考以下文章