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

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

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

Container 是 iframe 中 div 的 id。

提前感谢您的任何建议

【问题讨论】:

    标签: javascript iframe jquery same-origin-policy


    【解决方案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 的内容位于不同的域中,您将无法执行此操作,因为它被归类为“点击劫持”,这是一个很大的安全威胁。

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 2011-04-22
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多