2010-04-29 101 views
4

我试图拦截包含在iframe中的页面上单击的链接。这是我有的代码,但它不起作用。任何想法我需要做什么?jquery - 在iframe中单击拦截链接

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

Container是iframe中的div的id。

预先感谢任何建议

回答

2

您需要到达内设置委托在那里,你可以做这样的:

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

编辑 - Mailslut使得下方的好点,如果iframe不在同一个域(和端口)上,你不能做任何事情。如果是这种情况,你想知道更多关于为什么,read about the same-origin policy出于安全原因。

+0

来自不同域的IFRAME中的页面?如果是这样,你应该忘记能够做到这一点。 – 2010-04-29 11:37:09

+0

该页面可能是真的。它最有可能是另一个内部网站,所以我们的网站是our-site.blah.com,并且iframe中的链接可能是东西--else.blah.com - 是否会起作用? – Kaskade 2010-04-29 11:39:49

+0

@Kaskade - 如果你从'blah.com'运行主页并且iframe是'something-else.blah.com',它会起作用,因为它是一个子域目前的域名,但兄弟会不会...因为说'google.com'是'yourbank.com'的兄弟姐妹,'com'域的两个子目录。 – 2010-04-29 11:42:38

1

为什么不在iframe中添加事件侦听器,然后调用父/开启器来通知事件。

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