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("窗口被制止弹出");
}
posted @ 2020-03-09 17:37  Syinho  阅读(603)  评论(0编辑  收藏  举报