Facebook JavaScript发送对话框,回调函数工作不正常

时间:2012-02-07 12:27:30

标签: javascript facebook fb.ui

我正在尝试在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 个答案:

答案 0 :(得分:3)

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

Facebook实际上会将您传递的功能与响应一起调用。

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

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

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

答案 1 :(得分:2)

问题可能已经解决或与OP无关,但这可能有助于其他一些人发现这一点。

类似于Mike Jerema对Fisch回复的评论(由于代表不足而无法评论):

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

  1. 如果单击“发送”,则会传回一个空数组(instanceof Object)
  2. 如果单击取消,则返回null
  3. 如果单击对话框角落的“X”,则返回undefined。
  4. 因此,处理所有用例的回调的正确代码是:

    var callback = function(response) {
                   if (response instanceof Object)
                   {        
                       //Send clicked
    
                    }
                    else if (response === null)
                    {
                        //Cancel clicked
                    }
                    else 
                        //X clicked
                };
    

    希望这有帮助! :)

答案 2 :(得分:1)

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

检查出来:http://developers.facebook.com/bugs/380566711996797

由于这个“虫子”而浪费了2个小时的浪费

答案 3 :(得分:0)

这让我在饲料对话框上疯了2个多小时,然后作为最后一条沟我添加了显示属性

method: 'feed',
display: 'popup'

这条线不是必需的,因为它是默认的,但它可能会强制对话框正常运行,它让我走出了一个洞。值得一试的发送对话框?