Javascript 当父项不在同一域上时关闭该iframe中的iframe
我有一个facebook画布应用程序,作为顶部设置栏。我添加了一个like按钮,该按钮打开一个IFrame,其中包含喜欢该应用程序的用户,并带有喜欢/不喜欢该应用程序的选项。我在iframe中添加了一个按钮,该按钮在单击时将关闭该iframe 因此,在iframe html中,我有: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
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,这个解决方案将是完美的。