如何从 iframe 重新加载最顶部的窗口?
Posted
技术标签:
【中文标题】如何从 iframe 重新加载最顶部的窗口?【英文标题】:how to reload top most window from iframe? 【发布时间】:2011-08-22 01:57:47 【问题描述】:我正在开发一个具有以下“结构”的 facebook 应用程序:
Browser window (facebook.com/page/xxxx)
-- My app's iframe
-- Like button's iframe
我在我的应用程序中使用了一个喜欢按钮,所以这是 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();
);
页面似乎重新加载,但一切都保持不变,但如果我点击“喜欢”并点击浏览器中的刷新按钮,一切都会正常显示。
谁能帮我解决这个问题?
提前致谢!
【问题讨论】:
【参考方案1】:尝试top.location.reload(true);
而不是top.location.reload();
摘自http://www.w3schools.com/jsref/met_loc_reload.asp:
默认情况下,location.reload() 方法会从缓存中重新加载,但是 您可以通过设置强制重新加载从服务器获取页面 forceGet 参数为 true:location.reload(true)。
【讨论】:
【参考方案2】:要重新加载,您可以使用top.location.href = top.location.href;
【讨论】:
【参考方案3】:top.location.href="";
或 top.location.reload();
都不适合我。
我不得不使用top.location.href="http://www.facebook.com/appurl";
【讨论】:
【参考方案4】:我们将 facebook 父页面引用为 top
。
使用top.location.href="";
或top.location.reload();
【讨论】:
嗨,由于某种原因不起作用,我正在更新问题的详细信息。 这种方法的问题是它会询问用户是否要重新提交表单。 如果您使用的是 .reload()。 Facebook 使用表单将 signed_requests 发布到 iframe。因此,如果 iframe 重新加载,则会再次发送 POST_DATA 并要求确认。如果您使用 .href="YOUR_URL";你不会看到这个以上是关于如何从 iframe 重新加载最顶部的窗口?的主要内容,如果未能解决你的问题,请参考以下文章
在 iframe 中提交后重新加载页面(javascript/jquery)
如何让按钮在发送时刷新页面,并且在重新加载时同时使用相同的按钮让 iframe 滚动到框架的底部