Chrome无法用于window.open?

时间:2012-10-10 10:03:53

标签: javascript jquery ajax google-chrome firefox

我正在尝试向用户显示一个下载弹出窗口,这是一个ajax调用,提供text / csv格式的响应。

问题:它在Firefox中运行良好,但在Chrome中却没有,它正在打开一个新选项卡。这绝对是无意的,我宁愿没有发生。关于我可以改变的任何想法......?

function x() {

  var obj = jQuery("input:checked").map(function() 
  { 
    return jQuery(this).parents('tr').attr('id'); 
  });

  var result = null;
  var arr = jQuery.makeArray(obj);
  var data = arr.join(',');

  $.ajax({
    url : '<%= url_for :controller => "liges", :action => "export_to_csv" %>',
    type : 'POST',
    data : {data:data},
    dataType : 'string',
    async: false,
    success : function(response) { 
      window.open('data:text/csv;charset=utf-8,'+escape(response)); 
    }    
  }); 
};

2 个答案:

答案 0 :(得分:1)

试试这个:

window.open("","","width=400,height=150");

顺便说一下,chrome会阻止页面上的弹出窗口,直到你让他访问。

答案 1 :(得分:0)

您需要将_blank作为另一个参数传递:

来自MDN

  

要在window.open()的每次通话中打开新窗口,请使用_blank的特殊值strWindowName

示例:

window.open('data:text/csv;charset=utf-8,'+escape(response), '_blank');