2011-05-10 60 views
4

我开发它具有以下“结构” Facebook应用:如何从iframe重新加载最顶层的窗口?

Browser window (facebook.com/page/xxxx) 
    -- My app's iframe 
    -- Like button's iframe 

我用我的应用程序内的Like按钮,这样是一个iframe中的iframe,当用户点击该按钮一样我想展示的内容,因此网页目前看起来事端是这样的:

if (is_fan()) { 
    //show content 
} else { 
    //show like button plus other text 
} 

实际的逻辑来检查,如果用户已经是一个风扇按预期工作,但问题是,当我点击等等按钮我需要整个页面才能显示“粉丝内容”,如果我这样做:

FB.Event.subscribe('edge.create', function(href, widget) { 
    top.location.reload(); 
}); 

该网页似乎重新加载,但一切都保持不变,但如果我点击“赞”,并单击我的浏览器中的刷新按钮,一切都显示出来很好。

任何人都可以帮我解决这个问题吗?

在此先感谢!

回答

7

我们参考了facebook的父页面top

使用top.location.href="";top.location.reload();

+0

嗨,由于某种原因是行不通的,我正在更新问题的细节。 – javiervd 2011-05-10 01:46:38

+1

得知它不得不使用: 'top.location.href =“http://www.myappsurl.com”;' – javiervd 2011-05-10 01:56:22

+1

不适用于Chrome ... – mathew 2011-12-09 13:35:42

2

无论top.location.href="";top.location.reload();为我工作。

我不得不使用top.location.href="http://www.facebook.com/appurl";

0

要重新加载,你可以使用top.location.href = top.location.href;

2

尝试top.location.reload(true);代替top.location.reload();

http://www.w3schools.com/jsref/met_loc_reload.asp提取:

默认情况下,location.reload( )方法从缓存中重新加载,但你可以通过 强制重新加载通过将 forceGet参数设置为true来加载以从服务器获取页面:location.reload(true)。