初始化代码:
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有关。
答案 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'。