FB.ui在我的应用程序iFrame中呈现iFrame

时间:2012-02-19 18:49:51

标签: javascript facebook facebook-javascript-sdk

当我尝试渲染一个对话框,要求用户在他的墙上发帖时,对话框iframe会在我的应用程序iFrame中呈现,它隐藏了一半的对话:(

您可以在此处找到屏幕截图http://img59.imageshack.us/img59/3076/dialogueq.jpg

通常它应该显示为灯箱,应该在应用程序iFrame之外呈现。

 FB.ui(
 {
  method: 'feed',
  message: 'Gain points and prizes with '+pageName ,
  name: 'Visit our mobile community',
  caption: pageName,
  description: desc,
  link:  'http://mydomain.com/generateLink?pageId='+pageId,
  picture: 'http://mydomain.com/public/img/Logo.png',
  user_message_prompt: 'Share your thoughts about '+ pageName +' and gain points.'
 },
 function(response) {
    postedOnFb = true;
   if (response && response.post_id) {
   }
 }
);

任何遇到类似问题的人?

提前致谢

1 个答案:

答案 0 :(得分:1)

facbook js sdk提供的所有facebook ui体验都在iframe中呈现。由于这既适用于画布页面和网站,也没有考虑到您的页面在Facebook内部的事实。 更重要的是,如果它试图这样做可能会有一些安全问题,如果它有效,它可以为人们提供一个很好的机会XSS

由于您的应用程序位于页面内,并且看起来您使用的是小分辨率的屏幕,我建议您尝试在其弹出版本中显示此对话框。我同意,它不是那么光滑但是嘿,至少用户将能够看到所有这些。

要在弹出窗口中打开对话框,请指定“display”参数,如下所示:

FB.ui(
 {
  method: 'feed',
  display: 'popup',
  message: 'Gain points and prizes with '+pageName ,
  name: 'Visit our mobile community',
  caption: pageName,
  description: desc,
  link:  'http://mydomain.com/generateLink?pageId='+pageId,
  picture: 'http://mydomain.com/public/img/Logo.png',
  user_message_prompt: 'Share your thoughts about '+ pageName +' and gain points.'
 },
 function(response) {
    postedOnFb = true;
   if (response && response.post_id) {
   }
 }
);

您可以在此处详细了解:http://developers.facebook.com/docs/reference/javascript/FB.ui/