5

我正在尝试在 FB.ui 中执行回调函数(发送对话框)。它在加载 FB.ui 时同时调用,但我想在按下“发送”或“取消”按钮后执行回调函数。是否可以实现?

function callback(response) {
      alert('message was sent');
}

FB.ui({
                method: 'send',
                name: 'Dialog',
                link: 'http://***.com',
                redirect_uri: '****',
                description: '***',
                picture: '***',
                to: userId
            },
                callback(response)
            );
4

4 回答 4

3

回调需要一个函数作为参数。在这里,您实际上是在调用该函数。

Facebook 实际上会调用您传递的函数以及响应。

与其将“callback(response)”作为回调参数传递,不如像这样传递“callback”:

function callback(response) {
      alert('message was sent');
}

FB.ui({
       method: 'send',
       name: 'Dialog',
       link: 'http://***.com',
       redirect_uri: '****',
       description: '***',
       picture: '***',
       to: userId
       },
       callback
);
于 2012-03-15T01:40:36.490 回答
2

问题可能已经解决或与 OP 无关,但这可能会帮助其他一些偶然发现该帖子的人。

类似于 Mike Jerema 对 Fisch 回复的评论(由于代表不足,无法在此处发表评论):

从与发送对话框交互的用户接收的响应回调返回以下三件事之一:

  1. 如果单击发送,则返回一个空数组(instanceof Object)
  2. 如果单击取消,则返回 null
  3. 如果单击对话框角落的“X”,则返回未定义。

因此,为所有用例处理此回调的正确代码是:

var callback = function(response) {
               if (response instanceof Object)
               {        
                   //Send clicked

                }
                else if (response === null)
                {
                    //Cancel clicked
                }
                else 
                    //X clicked
            };

希望这可以帮助!:)

于 2014-01-15T12:25:31.953 回答
1

哟,我不确定是不是你的情况,但在开发环境中测试时似乎存在一个错误,主要是由于与 url 中的端口参数相关的问题。

看看这个:http: //developers.facebook.com/bugs/380566711996797

由于这个“错误”,浪费了 2 个小时

于 2012-07-04T02:53:03.983 回答
0

这让我在提要对话框上疯狂了 2 个多小时,然后作为最后一搏,我添加了 display 属性

method: 'feed',
display: 'popup'

这条线不是必需的,因为它是默认的,但也许它会强制对话框正常运行,它让我摆脱了困境。发送对话框值得一试吗?

于 2013-04-17T16:49:03.930 回答