Javascript 当父项不在同一域上时关闭该iframe中的iframe

Javascript 当父项不在同一域上时关闭该iframe中的iframe,javascript,html,iframe,facebook-like,facebook-canvas,Javascript,Html,Iframe,Facebook Like,Facebook Canvas,我有一个facebook画布应用程序,作为顶部设置栏。我添加了一个like按钮,该按钮打开一个IFrame,其中包含喜欢该应用程序的用户,并带有喜欢/不喜欢该应用程序的选项。我在iframe中添加了一个按钮,该按钮在单击时将关闭该iframe 因此,在iframe html中,我有: function closeIFrame() { window.parent.closeLikeIframe(); } 我创建的按钮执行此函数 在父页面中,我有以下代码: function closeLi

我有一个facebook画布应用程序,作为顶部设置栏。我添加了一个like按钮,该按钮打开一个IFrame,其中包含喜欢该应用程序的用户,并带有喜欢/不喜欢该应用程序的选项。我在iframe中添加了一个按钮,该按钮在单击时将关闭该iframe

因此,在iframe html中,我有:

function closeIFrame() {
    window.parent.closeLikeIframe();
}
我创建的按钮执行此函数

在父页面中,我有以下代码:

function closeLikeIframe() {
    var iframe = document.getElementById('likeIframe');
    iframe.style.display = "none";
}
因此,在Firefox中它工作得很好,但在其他浏览器中却不行。我可以看到一个javascript错误

unsafe JavaScript attempt to access frame with URL http://X from frame with URL http://Y. Domains, protocols and ports must match.
user_like.html:15Uncaught TypeError: Property 'closeLikeIframe' of object [object DOMWindow] is not a function
它没有找到closeLikeIframe函数,因为主页位于facebook上,而IFrame本身位于我的服务器上,所以我不允许访问

有没有关于如何正确打开和关闭IFrame的想法


谢谢

有一个通用的解决方法有点粗糙,它包括在第一个iframe中放置另一个iframe:

+------------------------------------------------+
| A: Main page on FB                             |
|                                                |
|    +---------------------------------------+   |
|    | B: Iframe (page on your server)       |   |
|    |                                       |   |
|    |    +--------------------------------+ |   |
|    |    | C: Another iframe, page on FB  | |   |
|    |    |                                | |   |
|    |    +--------------------------------+ |   |
|    +---------------------------------------+   |
+------------------------------------------------+
A和C可以通信,因为它们来自同一个域

C只包含一个小脚本,它侦听URL参数并调用a中的方法

B使用适当的URL参数设置C的src属性


编辑:用真实的图表和一切更好地解释它

有一个通用的解决方法有点粗糙,包括在第一个iframe中放置另一个iframe:

+------------------------------------------------+
| A: Main page on FB                             |
|                                                |
|    +---------------------------------------+   |
|    | B: Iframe (page on your server)       |   |
|    |                                       |   |
|    |    +--------------------------------+ |   |
|    |    | C: Another iframe, page on FB  | |   |
|    |    |                                | |   |
|    |    +--------------------------------+ |   |
|    +---------------------------------------+   |
+------------------------------------------------+
A和C可以通信,因为它们来自同一个域

C只包含一个小脚本,它侦听URL参数并调用a中的方法

B使用适当的URL参数设置C的src属性


编辑:用真实的图表和一切更好地解释它

我对facebook没有经验,但一般来说JavaScript无法从其他域访问任何内容,除了重新概念化项目之外,人们也无能为力。我对facebook没有经验,但是通常JavaScript不能从另一个域访问任何东西,除了重新概念化这个项目之外,我们也无能为力。谢谢。看起来是个好主意。我接受你的回答。我通过使用div而不是iframe解决了这个问题。但如果我必须使用iframe,这个解决方案将是完美的。谢谢。看起来是个好主意。我接受你的回答。我通过使用div而不是iframe解决了这个问题。但是如果我必须使用iframe,这个解决方案将是完美的。