如何从iframe重新加载最顶层的窗口?

时间:2011-05-10 00:25:10

标签: facebook browser iframe reload

我正在开发一个具有以下“结构”的Facebook应用程序:

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

我在我的应用程序中使用了Like按钮,因此在iframe中使用iframe,当用户点击like按钮时我想显示内容,以便页面当前看起来像这样:

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

检查用户是否已经是粉丝的实际逻辑正在按预期工作,问题是当我点击“赞”按钮时,我需要重新加载整个页面才能显示“粉丝内容”,如果我这样做的话这样:

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

页面似乎重新加载,但一切都保持不变,但如果我点击“赞”并点击浏览器中的刷新按钮,一切都会显示正常。

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

提前致谢!

4 个答案:

答案 0 :(得分:7)

我们将facebook父页面引用为top

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

答案 1 :(得分:2)

top.location.href="";top.location.reload();都不适合我。

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

答案 2 :(得分:2)

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

摘自http://www.w3schools.com/jsref/met_loc_reload.asp

  

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

答案 3 :(得分:0)

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