Javascript 防止弹出窗口被阻止
我在页面加载代码中使用了Facebook登录方法,但当我执行此代码时,弹出窗口拦截器会关闭Facebook权限窗口 如何使用Javascript 防止弹出窗口被阻止,javascript,facebook,popup,Javascript,Facebook,Popup,我在页面加载代码中使用了Facebook登录方法,但当我执行此代码时,弹出窗口拦截器会关闭Facebook权限窗口 如何使用Javascript打开此窗口,而无需在弹出窗口阻止程序中创建异常 下面是我的代码: FB.login(function(response) { if(response.session!=null) { window.location.href='http://example.com'; } }, { perms: 'email,us
Javascript
打开此窗口,而无需在弹出窗口阻止程序中创建异常
下面是我的代码:
FB.login(function(response)
{
if(response.session!=null)
{
window.location.href='http://example.com';
}
},
{ perms: 'email,user_birthday,publish_stream' });
如果你试图自动打开一个弹出窗口,那么弹出窗口拦截器很有可能被激活,据我所知,它必须基于一些用户操作,例如点击按钮。尝试在点击按钮时执行此代码,它应该可以工作。如果您只需对弹出窗口拦截器进行编码,那么现有的弹出窗口拦截器就没有意义了。您需要找到一种不使用弹出窗口的方法,或者需要用户与浏览器进行一些交互才能打开弹出窗口。文档中明确否认了这一点: 只能在用户事件打开弹出窗口时调用此选项。大多数浏览器都会阻止弹出窗口,除非它们是从用户事件(如单击按钮或链接)启动的
这也是一种糟糕的用户体验。你可以做类似的事情-
var uri = encodeURI('http://example.com');
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.location.href=uri;
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri="+uri+"&response_type=token");
}
这将直接重定向,而不是打开弹出窗口是的,您需要使用用户事件调用它,但严格来说是
onclick
事件,而不是任何其他事件:
<a href="#" onclick="fbLogin()"> Login</a> <!-- works -->
<a href="#" onmousedown="fbLogin()"> Login</a> <!-- doesnt work -->
<a href="#" onmouseup="fbLogin()"> Login</a> <!-- doesnt work -->
是的,阿纳布!它可以通过点击事件处理,但我需要在页面加载时显示。有什么想法吗???试试document.getElementById('shareButtonId')。单击()
我不想使用用户交互,在单击我的邀请链接后,请访问我的主页,在那里我想在没有任何用户交互的情况下显示facebook权限弹出窗口。任何人都有在iframe中显示facebook权限弹出窗口的想法,它可以解决弹出窗口拦截器问题。有什么?在重定向oauth URI中,使用额外的GET参数“scope”,在此处查看可能的答案:有趣,但您在哪里请求特定权限,如“{perms:'email,user\u birth,publish\u stream'}”。检查我强烈不同意这是“简单的糟糕用户体验”。避免弹出窗口不那么突兀,特别是在用户已经连接到Facebook的情况下,弹出窗口会快速出现和消失。我认为UX设计最好为oauth重定向,而不是打开一个弹出窗口。。。我所说的是关于用户发起的交互,我没有注意到OP正在寻找一种通过Facebook秘密授权他们的方式。