Javascript 从iFrame(本地页面)与家长(Facebook FBML页面)通信

Javascript 从iFrame(本地页面)与家长(Facebook FBML页面)通信,javascript,iframe,fbml,Javascript,Iframe,Fbml,我目前正在开发一个Facebook应用程序,其中有一个iFrame。iFrame加载一个Java小程序(因此FBML页面只是页眉页脚和FBML函数的包装) 例如,当前的情况是,Java小程序有一个事件(用户完成了游戏),它在iFrame页面上执行javascript调用。然后它需要做的是在父窗口(Facebook.streamPublish())中调用javascript,以便用户能够发布他的分数/事件/赢/输 FBML页面上的iFrame代码: <fb:iframe id='applet

我目前正在开发一个Facebook应用程序,其中有一个iFrame。iFrame加载一个Java小程序(因此FBML页面只是页眉页脚和FBML函数的包装)

例如,当前的情况是,Java小程序有一个事件(用户完成了游戏),它在iFrame页面上执行javascript调用。然后它需要做的是在父窗口(Facebook.streamPublish())中调用javascript,以便用户能够发布他的分数/事件/赢/输

FBML页面上的iFrame代码:

<fb:iframe id='appletIframe' frameborder='0' resizable='true' scrolling = 'no' name='appletIframe' src='appletPage.php'></fb:iframe>

每次我尝试与家长沟通时,我都会被拒绝访问,因为这是一个跨域呼叫。我想知道是否可以使用Facebook.connect或其他技术给家长打电话,或者是否有其他方法。如果用户完成一个游戏,在iFrame调用和父调用之间应该有最小的延迟

我在iFrame中运行applet的原因是,applet是由deployJava(Sun分发的类)部署的,如果我在facebook FBML页面上运行它,Javascript导航器类将被附加(a_navigator)并且它不会运行

我希望我的描述足够清楚,有人知道吗

提前感谢您的帮助


Michael

您好,我刚刚遇到了这个问题,想做一些像您这样的事情,我觉得被黑客攻击了。但我所做的是使用它
yourApplet.getAppletContext().showDocument(url,“\u parent”)。这有助于我重定向到另一个有脚本要发布的窗口。在这个新窗口中,我有一个通过javascript发布故事的按钮。这个按钮不是必需的

使用“\u parent”非常重要,这样您就可以重定向父窗口


我希望这有助于解决老问题。。。但是这里有一个非常好的资源

如果您的iframe位于另一个域上,则无法访问父页面/窗口。也许facebook有另一种机制,你可以通过它发起“streamPublish()”。我担心这不可能,不过还是要感谢你在棺材里钉上了最后一颗钉子。