即使用户事件触发,Facebook权限弹出也会被阻止。为什么?

时间:2011-09-05 13:39:13

标签: javascript facebook popup facebook-javascript-sdk

以下是页面:http://textbookcentral.com.au/26/university-of-new-south-wales/buy/69897/acct1501/?query=

当“告诉别人我在facebook墙上买一本教科书”时。选中复选框并单击“请求此教科书”,无论表单输入数据是否有效,它都会尝试在您的Facebook墙上发布墙贴,根据需要打开登录对话框或权限对话框。

但是,如果您的浏览器阻止弹出窗口,则不会显示该对话框。我在Safari和Firefox中测试了这个。

只有当您单击“请求此教科书”按钮时才会触发javascript,但弹出窗口仍然被阻止,为什么?

(查看来源,向下滚动,您还会看到以下相关代码。)

<a href="#" class="submit button" onclick="make_facebook_request_post()">Request this textbook</a></p>
  </div>

  </form>

</div>
<script type="text/javascript">
function make_facebook_request_post() {

  if ($('#id_facebook').is(':checked')) {
    facebook.do_post(function(success) {}, 
      'I am using http://textbookcentral.com.au to buy a textbook for ACCT1501.', 'publish_stream')
  }

}
</script>

facebook.do_post函数将进行FB.api调用。 见http://textbookcentral.com.au/site_media/static/central/js/facebook.js

1 个答案:

答案 0 :(得分:5)

是的,他们在文档中指明了这一点。

http://developers.facebook.com/docs/reference/javascript/FB.login/

  

调用FB.login会导致JS SDK尝试打开弹出窗口   窗口。因此,只应在用户单击后调用此方法   事件,否则大多数浏览器都会阻止弹出窗口。