我成功显示了邀请好友对话框(代码如下所示)。当用户单击“跳过”时,iframe/对话框会显示一个新页面。但是从现在起我找不到关闭 iframe/dialog 的方法。 FB.ui 不返回任何对象,似乎没有 Javascript SDK 方法,并且使用 DOM 进行遍历和操作对于任何 FB 代码更改都很脆弱。
有任何想法吗?
function popupInviteForm(actionUrl) {
var fbmlString = '<fb:fbml>' +
' <fb:request-form type="POST" content="Play against me in game?" action="' + actionUrl + '" method="post" >' +
' <fb:multi-friend-selector target="_self" exclude_ids="" max="20" cols="4" rows="3" showborder="false" actiontext="Invite friends!" />' +
' </fb:request-form>' +
'</fb:fbml>';
FB.ui({
method: 'fbml.dialog',
fbml: fbmlString,
display: 'dialog',
size: {width:640,height:480}, width:640, height:480
});
$(".FB_UI_Dialog").css('width', $(window).width()*0.8);
}
(注:我已经在脸书论坛 http://forum.developers.facebook.net/viewtopic.php?id=86097没有回应。如果其中一个有答案,我将更新两者。)
Javascript 代码改编自堆栈溢出answer https://stackoverflow.com/questions/1781973/facebook-connect-displaying-invite-friends-dialog-and-closing-on-completion/3809066#3809066.
我也有同样的麻烦。第二天寻找解决方案。刚刚找到一种方法:
要关闭活动 FB 对话框,您应该在 FB JS 可用且调用 FB.ui 的父窗口中执行以下代码:
FB.Dialog.remove(FB.Dialog._active);
因此,如果您希望邀请对话框自动关闭并且不重定向到任何其他页面,请使用以下步骤:
1) 将 和 的目标属性设置为“_self”:
目标=“_self”
2) 在您的网站上创建一些回调网址/页面,例如https://mysite/close_dialog.html
3) 设置刚刚创建的 url 的操作属性:
动作=“http://mysite/close_dialog.html”
4)在 close_dialog.html 中添加以下 JS:
<script type="text/javascript">
if (document.location.protocol == 'https:') {
document.location = 'http://mysite/close_dialog.html';
} else {
top.window.FB.Dialog.remove(top.window.FB.Dialog._active);
};
</script>
UPDATE:
5)这样还有一个问题:
FB iframe 通过 https 加载,但如果请求表单“action”attr 使用“http” - 用户将收到浏览器警告。但是,如果请求表单“action”具有“https” - iframe js 无法访问“http”加载的父级。
所以,这就是为什么你应该使用“https”操作的原因
希望这可以帮助
如果您有更好的解决方案或者可以改进这种方式 - 请让所有人知道这一点,
感谢您的任何评论
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)