即使由用户事件触发,Facebook 权限弹出窗口也会被阻止。为啥?
Posted
技术标签:
【中文标题】即使由用户事件触发,Facebook 权限弹出窗口也会被阻止。为啥?【英文标题】:Facebook permission popup blocked even when triggered by user event. Why?即使由用户事件触发,Facebook 权限弹出窗口也会被阻止。为什么? 【发布时间】:2011-09-05 13:39:12 【问题描述】:这里是页面: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
【问题讨论】:
好的,我明白了...我无法将登录调用包装在 init 调用中。我必须事先初始化 facebook sdk 方式。否则登录调用不是由 userevent 调用,而是由传入的异步响应调用。 【参考方案1】:是的,他们在文档中指定了这一点。
http://developers.facebook.com/docs/reference/javascript/FB.login/
调用 FB.login 会导致 JS SDK 尝试打开一个弹出窗口 窗户。因此,这个方法应该只在用户点击后调用 事件,否则弹出窗口将被大多数浏览器阻止。
【讨论】:
他的观点是,即使是用户点击触发,还是会被阻塞。我的代码也有同样的问题。以上是关于即使由用户事件触发,Facebook 权限弹出窗口也会被阻止。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何在chrome(javascript)上触发麦克风权限弹出窗口[重复]