2010-09-21 85 views
0

工作下面是代碼下載文件沒有在Chrome

function ExportToExcel() { 
      if ($("#dateRange").val() != "") { 
       var frm = $("#frmProjectReport").serialize(); 
       var url = "/Reports/ProjectExcelReport?" + frm; 
       Download(url); 

      } 
     } 

     function Download(url) { 
      alert(url); 
      //var win = window.open(url, "DownloadWin", "resizable=0,status=0,toolbar=0,width=600px,height=300px"); 
      var win = window.open(url, "DownloadWin", "width=600px,height=300px,scrollbars=yes ,menubar=no,location=no,left=0,top=0") 
      win.focus(); 
      win.moveTo(100, 100); 
     } 

它除了鉻所有瀏覽器的工作。

我用框架也如下面的代碼,但它在海量數據的情況下簡化版,工作..

function Download(url) { 
      try { 
       $("#fileIframe").html(""); 
       var iframe = $('<iframe name="postframe" id="postframe" class="hidden" frameBorder="0" src="about:none" />'); 
       $('#fileIframe').append(iframe); 
       $('#frmProjectReport').attr("action", url); 
       $('#frmProjectReport').attr("method", "post") 
       $('#frmProjectReport').attr("target", "postframe") 
       $('#frmProjectReport').submit(); 

       //win = window.open(url, "DownloadWin", "width=600px,height=300px,scrollbars=yes ,menubar=no,location=no,left=0,top=0") 
       //win.focus(); 
       //win.moveTo(100, 100); 
      } 
      catch (e) { 
       alert(e) 
      } 
     } 
+0

你是否檢查過彈出式窗口攔截器? – sheeks06 2010-09-21 06:24:48

+1

鉻中發生了什麼?如果窗口沒有打開,那麼可能是因爲彈出窗口阻止程序。 – VinayC 2010-09-21 06:26:07

+0

你做了...代碼在所有瀏覽器中工作,除了chorme。 – 2010-09-21 06:26:47

回答

2

下面是使用IFRAME我們導出Excel文件的方式:

function download(src){ 
    var ifr = document.createElement('iframe'); 
    ifr.style.display = 'none'; 
    document.body.appendChild(ifr); 
    ifr.src = src; 
    ifr.onload = function(e){ 
     document.body.removeChild(ifr); 
     ifr = null; 
    }; 
} 

它適用於所有瀏覽器,並具有不彈出窗口的優勢。

+0

感謝Mic爲您的回覆。但是這也造成了問題,當數據是非常大的序列化對象。在這種情況下,什麼都不會發生。在我的情況下,數據量非常巨大。 – 2010-09-21 11:55:48

+1

通過GET請求發送的數據量(在url中)是有限的,取決於瀏覽器。如果它很大,你需要先用POST調用你的後端,接收一個id,然後用這個id進行GET調用。 – Mic 2010-09-21 12:18:23

+0

好的謝謝麥克...讓我再檢查一遍...... – 2010-09-21 13:21:55

0

嘗試以下方法:

function Download(url){ 
    try 
    { 
     var win = window.open(url,"DownloadWin","width=600px,height=300px,scrollbars=yes ,menubar=no,location=no,left=0,top=0"); 
     try 
     { 
      win.focus(); 
      win.moveTo(100, 100); 
     }catch(e){/*Focus|moveTo not supported*/} 
    }catch(e){/*open not supported, doubt it.*/} 
} 

我認爲它可能是下到moveTo()方法作爲鉻是一個純粹的標籤式瀏覽器。

也試試看看window.resizeTo(100,100)

+0

我曾試過這也羅伯特,但它沒有爲我工作。謝謝你的迴應。 – 2010-09-21 13:24:03