Facebook JavaScript SDK:FB.ui打开一个弹出窗口

时间:2011-07-29 23:52:54

标签: facebook facebook-javascript-sdk

我正在尝试使用facebook iframe应用中的以下代码显示“发布到你的墙上”供稿对话框:

<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

我不希望Feed对话框出现在新的弹出窗口中,因为在大多数现代Web浏览器中都会阻止弹出窗口。我不知道为什么会这样。请帮忙。

6 个答案:

答案 0 :(得分:9)

如果用户未授权您的应用程序,我很确定您会弹出一个弹出窗口。出于安全原因,Facebook让它以这种方式工作。如果您首先提示授权,那么您应该获得内联对话框。

请注意,授权请求本身就是一个弹出窗口,但您只需要执行一次。在Facebook应用程序中,我有这样的方式,你想要的方式。随意抓取javascript代码,它不是特定于应用程序。

答案 1 :(得分:9)

试试这个,将FB.ui放在FB.getLoginStatus:

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

答案 2 :(得分:1)

我有相同的UI问题,我也不喜欢弹出窗口。

我刚刚找到a link

它帮助我们在同一窗口中重定向页面。但它并没有完全解决我们的问题。

答案 3 :(得分:1)

在我的情况下,问题似乎已经通过将显示设置为异步

来解决
     display: 'async',

我认为这是页面选项卡和画布的默认设置,但有时不会出现在主窗口中,而是会加载一个新的弹出窗口。 设置之后(在我的情况下是页面标签)我没有注意到从那时起出现任何弹出窗口..

答案 4 :(得分:1)

我知道这有点旧了,但是当我试图为自己解决这个问题时,我偶然发现了这个问题,而且这里没有任何答案适用于我。

为了造成这个问题的其他人的利益,这种情况发生在我身上,因为我试图在页面加载时调用对话框。将它移动到用户触发的事件(例如点击)可以解决它。

答案 5 :(得分:0)

有一个&#34; URL重定向&#34; Feed Dialog文档中的部分:

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对话框现已在v2.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

分享Open Graph故事:

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

&#39; display = popup&#39; bit会影响共享屏幕的外观,但不会打开新窗口。 display的可能值为:

async, iframe, page, popup, touch, wap