Skip to content
jiang2016tao edited this page Dec 19, 2018 · 2 revisions

window.open被浏览器拦截弹出及解决方法

之前使用该方法弹出是不会被浏览器拦截的,最近的一个页面总是被浏览器拦截。刚开始还没管,后来需要面对解决,一时自己也不知道是啥原因。
window.open浏览器弹出新窗口被拦截—原因分析和解决方案

  • 当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了 -
    原来这次window.open是写在ajax的异步代码里:
lookOnLine(e,at,o){
            let option={
                url:urlFilter.getUrl("LookFileOnLine"),
                type:"POST",
                dataType:"json",
                data:{
                    mediaName:at[1]
                }
            };
            tpAjax.getData(option,data=>{
                window.open("/ims_smart_web/upload/"+at[1]);
            });
        },

修改代码:

lookOnLine(e,at,o){
            let option={
                url:urlFilter.getUrl("LookFileOnLine"),
                type:"POST",
                dataType:"json",
                data:{
                    mediaName:at[1]
                }
            };
            let newWin=window.open(window.location.href);
            tpAjax.getData(option,data=>{
                newWin.location="http://"+window.location.host+'/ims_smart_web/upload/'+at[1];
            });
        },

Clone this wiki locally