2016-03-04 54 views
0

我有一個跟蹤服務器上發生的事件數量的程序。我希望能夠將單個事件詳細信息導出到csv文件並允許用戶下載它。link.click();在Chrome瀏覽器工作時無法在Internet Explorer中工作

我有一個按鈕,上,看起來像這樣的頭版:

<button class="btn btn-main btn-actions-ok" ng-click="exportIncident()">Export Incident</button> 

和在後端代碼我有陣列稱爲陣列totaDatarow [];

  $scope.exportIncident = function() { 
       var totalDataRow = []; 
       var csvContent = "data:text/csv;charset=utf-8,"; 
       var exportDataHeader = ["Event Type", "User ID", "Event Date", "Description", "DocNum", "Library", "Version", "Comments"] 
       totalDataRow.push(exportDataHeader); 
       var incident = $scope.incident; 
       incident.details.forEach(function (detail) { 
        var exportDatarow = []; 
        //logic to add incident information to exportDatarow 
        totalDataRow.push(exportDatarow); 
       }) 

       totalDataRow.forEach(function (infoArray) { 

        dataString = infoArray.join(","); 
        csvContent = csvContent + "\n" + dataString 
       }); 

       var encodedUri = encodeURI(csvContent); 
       var link = document.createElement("a"); 
       link.setAttribute("href", encodedUri); 
       link.setAttribute("download", "Incident_"+ incident.id +".csv"); 

       link.click(); 
      } 

,因爲通過使用這種方式,我不能找到一種方法來定製,我生成的文件的文件名,我沒有用window.open。所以我在按鈕裏面創建了一個鏈接並點擊它下載。 在鉻這個代碼工作得很好。 csv文件被創建並下載。但是,在Internet Explorer中,此代碼根本無法工作。 當我點擊按鈕時沒有任何反應。 我通過調試器運行它,發現當Internet Explorer到達link.click()時。當它試圖處理該行時,什麼都不會發生。

我需要幫助,因爲我不知道它是我的代碼問題還是Internet Explorer兼容性問題?或別的什麼謝謝。

回答

相關問題