我知道检测弹出窗口是否在其他浏览器中被阻塞的 javascript 技术(如 这个问题的答案所述)。下面是最基本的测试:
var newWin = window.open(url);
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
{
//POPUP BLOCKED
}
但是这在 Chrome 中不起作用。当弹出窗口被阻止时,“弹出窗口阻塞”部分永远不会被触及。
当然,这个测试在一定程度上是有效的,因为 Chrome 实际上并没有阻止弹出窗口,而是在右下角的一个小小的最小化窗口中打开它,其中列出了“阻止”弹出窗口。
我想要做的是能够告诉弹出窗口是否被 Chrome 的弹出窗口拦截器阻止。我尽量避免浏览器嗅探而喜欢特征提取。有没有不用浏览器嗅探的办法?
编辑 : 我现在已经尝试使用 newWin.outerHeight
、 newWin.left
和其他类似的属性来完成这个任务。当弹出窗口被阻止时,Google Chrome 将所有的位置和高度值返回为0。
不幸的是,即使弹出窗口实际打开了未知的时间,它也返回相同的值。经过一段神奇的时间后(在我的测试中是几秒钟) ,位置和大小信息将作为正确的值返回。换句话说,我还是没有找到答案。如果你能帮忙,我将不胜感激。