javascript - 如何检测弹出窗口是否在 chrome 中被阻止

标签 javascript popup

我正在尝试加载 facebook 授权页面,以便用户将他们的 fb 帐户连接到我的网站。问题是它是一个不同的域。代码如下

var left = (screen.width/2)-(550/2);
    var top = (screen.height/2)-(250/2);
    fbPopUp = window.open(authorizeURL,'fbWindow','menubar=0,status=0,titlebar=0,toolbar=0,resizable=1,width=400,height=275, top='+top+' , left='+left);

我如何知道这个窗口是否真的打开了? 我尝试了 Detect blocked popup in Chrome 的解决方案

最佳答案

基本上 Chrome 中存在一个错误。虽然它隐藏了弹出窗口,但它仍然会执行并且您仍然会取回窗口对象 - 因此常规检查不起作用。

这是对我有用的解决方案:

var popup = window.open(url);

if (popup) {
  popup.onload = function () {
    console.log(popup.innerHeight > 0 ? 'open' : 'blocked');
  }
} else {
  console.log('blocked');
}

这里的工作示例:http://jsbin.com/uticev/3/

关于javascript - 如何检测弹出窗口是否在 chrome 中被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8802409/

相关文章:

ios - 将数据从父 Controller 传递到 Swift 中的弹出 Controller

python - 无法在 Python 上使用 Selenium 定位弹出窗口上的元素

javascript - 如何创建 AngularJS 指令来获取 jquery 对话框并在按下 Enter 按钮时提交

java - 关闭下载弹窗java

javascript - 仅从对象 javascript 数组中过滤唯一值

javascript - 在另一个输入字段中按下按键时显示输入字段的值除以 php 变量

popup - 如何在flutter中动态创建和显示弹出菜单?

javascript - angular.js 应用程序中的多个 View

Javascript 变量在函数之外不起作用

javascript - 模型创建新行而不是进行编辑