我知道一些用于在其他浏览器中检测弹出窗口是否被阻止的JavaScript技术(如此问题的答案中所述)。这是基本测试:
var newWin = window.open(url);
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
{
//POPUP BLOCKED
}
但这在Chrome中不起作用。当弹出窗口被阻止时,永远不会到达“POPUP BLOCKED”部分。
当然,在某种程度上,测试是有效的,因为Chrome实际上没有阻止弹出窗口,而是在右下角的小型最小化窗口中打开它,列出“已阻止”的弹出窗口。
我想做的是能够判断Chrome的弹出窗口拦截器是否阻止了弹出窗口。 我尽量避免使用浏览器嗅探,而是采用特性检测的方式。 有没有一种方法可以在不使用浏览器嗅探的情况下实现这一点?
编辑:我现在尝试利用newWin.outerHeight
、newWin.left
和其他类似的属性来完成此操作。 当弹出窗口被阻止时,Google Chrome将所有位置和高度值都返回为0。
不幸的是,即使弹出窗口实际上已经打开了未知的时间,它也会返回相同的值。在某个神奇的时段(在我的测试中为几秒钟),位置和大小信息将返回为正确的值。 换句话说,我仍然无法更接近解决这个问题。 谢谢任何帮助。