2011-05-10 87 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)。