javacript实现不被浏览器拦截打开新窗口

情景:

1、用户发送数据到服务器

2、服务器根据用户的数据生成文档

3、服务器把所生成的文档的下载地址提供给用户

4、用户使用的浏览器自动根据下载地址下载文件

 

实现:

网上搜索查找了下实现方式,就我查到的大多是这几种。

 

1、直接使用window.open();   这种方式会被浏览器拦截。

2、构造表单,使用javascript进行表单提交来下载文件(设置表单的action、method、target属性)。 自己尝试了下,在我机器上安装的谷歌直接拦截,IE会提示是否允许。 

3、var tempWindow = window.open();

tempWindow.location="your address";

这种方式浏览器依旧会拦截,且会报location未定义错误。

 

最后:

在某网站看到有网友回复 把ajax设置为同步方式,可以解决,自己试了下,可以实现无弹窗打开新窗口。

 

demo:

$.ajax({
  type:'POST',
  data:send_data,
  url:'/demoURL',
  success:function(data, status){
    if (status === 'success'){
      window.open(data);
    }
  }
});

    

简单到难以置信。不过,实用。

 

posted @ 2016-12-14 17:19  萧清水  阅读(892)  评论(0)    收藏  举报