我知道javascript技术可以检测弹出窗口是否在其他浏览器中被阻止(如本问题的答案中所述).这是基本测试:
var newWin = window.open(url);
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
{
//POPUP BLOCKED
}
Run Code Online (Sandbox Code Playgroud)
但这在Chrome中无效.弹出窗口被阻止时,永远不会到达"POPUP BLOCKED"部分.
当然,测试工作到一定程度,因为Chrome实际上并没有阻止弹出窗口,而是在右下角的一个微小的窗口中打开它,列出"阻塞"弹出窗口.
我想做的是能够判断弹出窗口是否被Chrome的弹出窗口阻止程序阻止.我试图避免浏览器嗅探,以支持功能检测.有没有办法在没有浏览器嗅探的情况下做到这一点?
编辑:现在我已经尝试利用的newWin.outerHeight,newWin.left以及其他类似性质的做到这一点.当弹出窗口被阻止时,Google Chrome会将所有位置和高度值返回为0.
不幸的是,即使弹出窗口实际打开了一段未知的时间,它也会返回相同的值.经过一段神奇的时期(在测试中几秒钟),位置和大小信息将作为正确的值返回.换句话说,我仍然没有更接近解决这个问题.任何帮助,将不胜感激.
我在页面加载的代码中使用Facebook登录方法,但是当我执行此代码时,弹出窗口阻止程序会关闭Facebook权限窗口.
如何在Javascript不需要在弹出窗口阻止程序中例外的情况下打开此窗口?
以下是我的代码:
FB.login(function(response)
{
if(response.session!=null)
{
window.location.href='http://example.com';
}
},
{ perms: 'email,user_birthday,publish_stream' });
Run Code Online (Sandbox Code Playgroud) 我正在使用登录按钮进行共享.按钮和共享功能适用于除MS Edge之外的所有浏览器.它曾经在Edge 25上工作(我目前在Edge 38上).
问题是当我点击登录按钮时,会出现一个登录弹出窗口,我可以在其中输入我的凭据.一旦输入并且我尝试登录,弹出窗口不会关闭并重定向到此地址:
https://www.facebook.com/v2.1/dialog/oauth?app_id=141515299765971&auth_type=&channel_url=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2FlY4eZXm_YWu.js%3Fversion%3D42%23cb%3Df2de29c1e9204f4%26domain%3Dikeabuilds.sandbox3.2020.net%26origin%3Dhttp%253A%252F%252Fikeabuilds.sandbox3.2020.net%252Ff1deb23126bcc0c%26relation%3Dopener&client_id=141515299765971&display=popup&domain=ikeabuilds.sandbox3.2020.net&e2e=%7B%7D&locale=en_US&logger_id=80452c59-88a0-7681-0f2c-ac690c1d62b8&origin=1&redirect_uri=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2FlY4eZXm_YWu.js%3Fversion%3D42%23cb%3Df1aa391653df35c%26domain%3Dikeabuilds.sandbox3.2020.net%26origin%3Dhttp%253A%252F%252Fikeabuilds.sandbox3.2020.net%252Ff1deb23126bcc0c%26relation%3Dopener%26frame%3Df7b23e2a9aa328&ref=LoginButton&response_type=none%2Ctoken%2Csigned_request&scope=publish_actions&sdk=joey&seen_revocable_perms_nux=false&version=v2.1
Run Code Online (Sandbox Code Playgroud)
我也不被认为已登录.我在网上搜索了很多,甚至阅读了有关登录按钮的文档,除了只有一个解决方法之外没有找到任何东西.它包括将facebook url添加到windows的Internet选项中的可信站点.它不是一个可行的解决方案,因此对我来说不是一个解决方案.图像是facebook登录html页面的代码,空白重定向页面和包含登录按钮的页面.我还有一个.js页面,其中包含所有与Facebook相关的功能但不适合一张图片,如果需要,我会提供它.到底是怎么回事?
facebook登录按钮:

重定向链接:

包含facebook登录按钮的页面的html代码:

javascript facebook facebook-javascript-sdk facebook-login microsoft-edge