站长图库

【jquery】ajax 请求成功后新开窗口被拦截解决方法

 发布时间 2018-12-20 01:23:07 热度  480

 Tag标签:  jqueryajax拦截
广告
广告
广告
广告
广告

问题:

前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢?


分析:

浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了(不过如果是 _self 的话就不会有这个限制),即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截。


解决方法:

1、异步改为同步,即:async:false

2、将新开窗口指向为一个对象,然后修改对象的 url,比如:

$('.task').bind('click',function(){
    var w = window.open();
    $.ajax({
        type: 'POST',
        url: '/yourURL',
        dataType: 'json',
        error: function(){
            w.close();
        },
        success: function(res){
            w.location = res.url;
        }
    });
});

如果是get或者post方法的话,只需要改为同步即可,在全局设置:

$.ajaxSetup({  
    async : false  
});

这样就不会被浏览器主动拦截了,亲测可用。

站长图库

站长素材 - 建站资源分享平台

猜你喜欢
用CSS3美化半个字符巧妙方法

用CSS3美化半个字符巧妙方法

前端开发 735 2019-04-26

最近网上热炒的一个话题是如何用CSS美化半个字符。就是把一个字符劈成两半,一半是A样式,一半是B样式。当然,大...

TAG:园艺wordpress博客模板

全平台通用评论神器一键自动填写昵称、邮箱和网址

全平台通用评论神器一键自动填写昵称、邮箱和网址

前端开发 545 2019-04-18

我们在访问网站时,看到一篇文章,想发表评论时,是否经常要在评论框里手动填写自己的昵称、E-mail 和网址等留...

TAG:园艺wordpress博客模板

京东图床上传接口 PHP源码

京东图床上传接口 PHP源码

前端开发 868 2019-04-20

站长在制作网站的时候,前期往往投入都有限,而图片有事比较占用服务器空间的,所以都会选择使用图床,但是哪里的图床...

TAG:园艺wordpress博客模板

让padding、border等不占据高宽度的方法

让padding、border等不占据高宽度的方法

前端开发 764 2019-04-30

今天在仿一个网站的时候,发现所有的padding、border等都不占据高度、宽度,导致很多地方要去重新调试高...

TAG:园艺wordpress博客模板