FB.ui弹出窗口没有关闭

时间:2011-12-13 22:36:08

标签: facebook share

初始化代码:

            FB.init({
                appId: '123456789012345', 
                channelUrl: 'http://localhost/Some/Url/FacebookChannel',
                status: true, 
                cookie: true, 
                oauth: true, 
                xfbml: true  
            });

使用onclick调用以下代码:

    FB.ui({
            method: 'feed',
            name: settings.facebookShareName,
            link: settings.facebookLinkUrl,
            caption: settings.facebookShareCaption,
            description: settings.facebookShareDescription,
            message: message,
            display: 'popup'
    });

此代码在FF和Chrome中运行良好,主要适用于IE8。弹出窗口显示,用户可以发布到他们的墙上,但提交后,窗口不会关闭。它变为白色而没有进一步的交互,但必须由用户手动关闭。

为什么IE中的窗口没有自动关闭,和/或是否有强制弹出窗口关闭的变通办法?

编辑: 此问题可能与此未解决的bug有关。

6 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,并且从未能从Facebook获得回复功能的回复。我在console.log中没有看到任何内容,也没有在函数中插入任何警报。

我的解决方案是在FB.ui的redirect_uri中放入一个URL,该URL将转到带有self.close(或window.close)的HTML页面。 FB.ui弹出窗口在用户输入后重定向到那里并立即关闭。请记住更改FB应用程序的站点URL设置,使其与文件所在的域匹配。

这是我的代码,与我的表单提交动作相关联。函数(响应)回调仍然存在但未使用。如果有人发现语法错误,请对其进行评论。

    FB.ui ({
        method: 'feed',
        name: '',
        link: '',
        picture: '',
        caption: '',
        description: '',
        actions: {name:'',link:''},
        redirect_uri: 'http://.../self.close.html'
        },
        function(response) {
            console.log(response);
            if (response && response.post_id) {
                alert('yes');
                self.close();
            } else {
                alert('else yes');
            }
        });

self.close.html中的代码行:

<script type="text/javascript">self.close();</script>

答案 1 :(得分:3)

有点老线程,但这可能对某人有帮助...... 如果您忽略输入“redirect_uri”参数,弹出窗口将自动关闭。 (另外,响应回调现在也可以工作)

答案 2 :(得分:3)

return false;添加到方法调用中。

onsubmit="someMethod(); return false;"

答案 3 :(得分:2)

不是一件容易的事......但它可以起作用:

首先,要强制关闭对话框,您必须注意响应: 请参阅此处的完整文档和示例:https://developers.facebook.com/docs/reference/javascript/FB.ui/

获得回复后,您应该关闭对话框: 请参阅:http://facebook.stackoverflow.com/questions/4646441/how-to-close-a-facebook-sdk-dialog-opened-with-fb-ui

希望有所帮助! :)

答案 4 :(得分:2)

如果您不按上述方式提供redirect_uri,弹出窗口将会关闭 - 以及如果您不提供显示(即不提供display:'popup'或display:'iframe')。

答案 5 :(得分:0)

确保使用您的应用回调网址在同一个域中托管'http:// localhost / Some / Url / FacebookChannel'。