【问题标题】:Chrome not working for window.open?Chrome不适用于window.open?
【发布时间】:2012-10-10 10:03:52
【问题描述】:

我试图向用户显示一个下载弹出窗口,这是一个 ajax 调用,提供文本/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)); 
    }    
  }); 
};

【问题讨论】:

    标签: javascript jquery ajax google-chrome firefox


    【解决方案1】:

    试试这个:

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

    顺便说一句,chrome 会阻止页面上的弹出窗口,直到您授予他访问权限。

    【讨论】:

    • 这样,标签没有打开。它向我显示了一个弹出窗口。但这仍然不是下载弹出窗口,就像 FF 中的代码那样
    • 是的,我从设置中启用了弹出窗口!
    【解决方案2】:

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

    来自MDN

    要在每次调用 window.open() 时打开一个新窗口,请为 strWindowName 使用特殊值 _blank

    示例:

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

    【讨论】:

    • _blank 没有帮助。它向我展示了同样的东西!!一个新选项卡,所有 csv 内容为 html。
    • 所以您没有运行任何弹出窗口阻止程序?
    • 如何想一种不同的方式来显示 csv,大多数用户无论如何都会有 pup-up 阻止程序,尝试将内容发送到隐藏的 iframe 以开始下载,或显示它在div
    • stackoverflow.com/questions/365777/… 这是我找到的 iframe 示例..但是这种方式适用于 rails..???在那种情况下,我需要在路径中提供控制器和操作??
    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多