2011-07-29 139 views
11

我試圖表現出「張貼到你的牆」,在一個Facebook iframe應用程序下面的代碼飼料對話框彈出一個窗口:Facebook上的JavaScript SDK:FB.ui打開

<div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"> 
    </script> 
    <script> 
    FB.init({ 
     appId:'249725835046216', cookie:true, 
     status:true, xfbml:true 
    }); 

    FB.ui({ method: 'feed', 
     message: 'Facebook for Websites is super-cool', 
     name: 'Facebook Dialogs', 
     link: 'http://developers.facebook.com/docs/reference/dialogs/', 
     picture: 'http://fbrell.com/f8.jpg', 
     caption: 'Reference Documentation', 
     description: 'Dialogs provide a simple, consistent interface for applications to interface with users.' 



     }); 
    </script> 

的問題是,它是出現在新彈出的窗口是這樣的:

enter image description here

而不是表現爲這樣的沒有出現在彈出窗口:

enter image description here

我不希望飼料對話框出現在新的彈出窗口中,因爲在大多數現代Web瀏覽器中彈出窗口被阻止。我不知道爲什麼會發生這種情況。請幫忙。

回答

9

我敢肯定,如果用戶未授權您的應用程序,您會得到一個彈出窗口。 Facebook出於安全考慮而以這種方式工作。如果您首先提示授權,那麼您應該獲得內嵌對話框。

請注意,授權請求本身就是一個彈出式窗口,但您只需要一次就可以實現。我有這樣的事情,你想要的方式,在someecards Facebook應用程序。隨意獲取JavaScript代碼,它不是特定於應用程序。

+3

爲什麼不在這裏分享這個代碼? –

1

我有相同的用戶界面問題,我也不喜歡彈出窗口。

我剛剛發現a link

它可以幫助我們在同一個窗口中重定向頁面。但它並不能完美地解決我們的問題。

8

試試這個,把裏面FB.ui FB.getLoginStatus:

FB.getLoginStatus(function(response) { 
    if (response.authResponse) { 
    FB.ui({ 
     method: 'feed', 
     ... 
     display: 'dialog'  
    }); 
    } 
}); 
+2

要強制執行相反的操作,請使用'display:'popup''。如果您的FB.ui調用位於iframe中,並且您不希望在iframe中捕獲對話框,這非常有用。 –

+0

謝謝你救了我的命! :) – naCheex

0

在我的情況下,問題似乎已經被塞汀顯示解決了異步

 display: 'async', 

我認爲這是默認對於頁面標籤和畫布,但時不時,而不是出現在主窗口,它會加載一個新的彈出.. 雖然設置後(頁面標籤在我的情況下)我沒有注意到任何彈出來自然後..

1

我知道這有點舊了,但當我試圖爲自己解決這個問題時偶然發現了這個頁面,這裏沒有任何答案適用於我。

爲了這個問題的任何其他人的利益,這是發生在我身上,因爲我試圖在頁面加載時調用對話框。將其移至用戶觸發的事件(例如點擊)可爲我解決它。

0

有一個在文檔的Feed Dialog一個「URL重定向」部分:

https://www.facebook.com/dialog/feed? 
    app_id=145634995501895 
    &display=popup&caption=An%20example%20caption 
    &link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F 
    &redirect_uri=https://developers.facebook.com/tools/explorer 

所以,你可以在Javascript中做window.location=(this url),正確設置REDIRECT_URL,這應該沒有彈出工作。

請注意,Feed對話現已在第2版中棄用。0,所以檢查出Share Dialog代替:

要共享的鏈接:

https://www.facebook.com/dialog/share? 
    app_id=145634995501895 
    &display=popup 
    &href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F 
    &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer 

要共享打開圖故事:

https://www.facebook.com/dialog/share_open_graph? 
    app_id=145634995501895 
    &display=popup 
    &action_type=og.likes 
    &action_properties=%7B%22object%22%3A%22https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2F%22%7D 
    &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer 

'顯示=彈出' 位影響共享屏幕的外觀,它不會打開一個新窗口。 display的可能值爲:

async, iframe, page, popup, touch, wap