js_检测窗口弹出是否被禁止
- window.open()方法会返回一个指向新窗口的索引。我们可以尝试使用该索引来调整新窗口的位置和大小。
var wroxWin=window.open("http://www.baidu.com","_blank","location=0,width=400,height=400,resizeable=1");
wroxWin.resizeTo(500,500);//窗口大小变为500x500
wroxWin.moveTo(500,500)//新窗口左上角移动到屏幕的(500,500)处
- 调用close()方法还可以关闭新打开的窗口
wroxWin.close();
- 大多数浏览器只允许通过用户点击的方式弹出窗口,例如以下代码的弹窗行为会被浏览器制止。
<body>
<script>
window.onload=()=>{
tanChu();
function tanChu(){
var wroxWin=window.open("http://wwww.baidu.com","_blank");
}
}
</script>
</body>
上面的代码实测在chrome、FF、Opera、Edge中均被拦截。
-
弹出窗口屏蔽程序
弹出窗口被屏蔽时考虑两种可能,一种是浏览器内置程序拦截,还有一种是浏览器插件拦截。- 当浏览器内置程序拦截时,window.open()会返回null。
- 当浏览器插件拦截时,window.open()会报错。
-
准确地判断弹窗是否被拦截
var blocked=false;
try{
var worxWin=window.open("http://www.baidu.com","_blank");
if(worxWin==null){
blocked=true;
}
}catch(ex){
blocked=true;
}
if(blocked){
alert("窗口被制止弹出");
}