2016-09-19 15 views
1

不工作我用下面的代碼jQuery的數據表在Firefox

$("body").html(tab).promise().done(function() { 

      $('table').DataTable({ 
       initComplete: function() { 
        $('.buttons-excel').click() 
       }, 
       paging: false, 
       columnDefs: [{ 
        targets: 'no-sort', 
        orderable: false 
       }], 

       dom: 'Bfrtip', 
       fixedHeader: { 
        header: true 
       }, 
       buttons: { 
        extend: 'excelHtml5', 
        customize: function(xlsx) { 
         var sheet = xlsx.xl.worksheets['sheet1.xml']; 

         $('row c[r^="C"]', sheet).attr('s', '2'); 
        }, 
        buttons: [{ 
         extend: 'excel', 
         text: '<i class="fa fa-print"></i> excel', 
         title: filename, 
         exportOptions: { 
          columns: ':not(.no-print)' 
         } 
        }], 
        dom: { 
         container: { 
          className: 'dt-buttons' 
         }, 
         button: { 
          className: 'btn btn-default' 
         } 
        } 
       } 
      }); 
}); 

這工作正常,在Chrome和IE

但在Firefox,我得到下面的錯誤

沒有良好形成(未知)

有關背景代碼:

加載頁面裏面的iFrame

會有此頁面內只有一個表使用jQuery的數據表

頁面將自動觸發Excel中點擊即可開始下載

我已經閱讀了關於SO的幾個問題,指出我們應該爲ajax調用更改MIME類型,但是在這裏我們沒有發出ajax調用,因爲表將在頁面加載的服務器端代碼中加載

回答

0

這是奇怪的

原來,Firefox是不會允許從一個iFrame下載,如果其隱藏

以前代碼是

<iframe id="iframeFile" runat="server" style="display:none"></iframe> 

然後我試着將它改爲

<iframe id="iframeFile" runat="server" style="width:0;height:0;overflow:hidden"></iframe> 

這一切都開始工作!奇怪

P.S:如果有人能就如何實現這一曾在評論部分中添加信息,這將有助於誰在未來

1

確保您已遵循表格的HTML結構。

  1. 明確定義的tabel開始和結束標記。這樣<thead><tr><th>...</th><th>...</th>...</tr></thead>

  2. 所有數據記錄行

  3. 爲標題行確保您已經定義的結構確保你定義了諸如列各行這個<tbody><tr><td>...</td><td>...</td></tr></tbody>

  4. 數量結構必須相等。

  5. 如果你有頁腳行確保您已經定義的結構是這樣<tfoot><tr><td>...</td><td>...</td></tr></tfoot>
+0

用簡單有效的表結構嘗試閱讀的人,沒有運氣 –