2011-12-13 162 views
1

的初始化代码:FB.ui弹出窗口不会关闭

  FB.init({ 
       appId: '123456789', 
       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和铬工作正常,且多在IE8中工作。弹出窗口显示,用户可以发布到他们的墙上,但提交后,窗口不会关闭。它变成白色而没有进一步的交互,但必须由用户手动关闭。

为什么窗口不能在IE中自动关闭和/或是否有任何解决方法来强制弹出窗口关闭?

编辑: 此问题可能与此突出bug有关。

回答

3

我有同样的问题,并从来没有能够得到回应Facebook的回应函数。我在console.log中看不到任何内容,或者在函数中插入的任何警报。

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

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

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> 
+0

这也是我最终解决的解决方案。 – Ryre 2012-01-26 21:00:07

0

请确保'http:// localhost/Some/Url/FacebookChannel'与您的应用回调网址位于同一个域中。

+0

没有回调url;你的意思是画布网址?无论哪种方式,一切都设置为本地端口80. – Ryre 2011-12-21 15:37:26

3

有点老的线程,但是这可能帮助别人...... 弹出窗口会自行关闭,如果你忽略了投入“redirect_uri”参数。 (此外,回应回调现在也可以)

+5

似乎没有工作了。如果你不提供`redirect_uri`,共享对话框将不会被渲染。 – 2014-05-04 10:54:17

1

如果您不提供上述的redirect_uri,那么弹出窗口将关闭 - 以及如果您不显示(即不显示:'弹出“或显示:'iframe')。

+3

似乎没有工作了。如果你不提供`redirect_uri`,共享对话框将不会被渲染。 – 2014-05-04 10:54:33

2

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

onsubmit="someMethod(); return false;"