Layui表格导出功能兼容IE

找到layui目录下table.js    

复制代码
d.exportFile = function (e, t, i) {
    t = t || d.clearCacheKey(d.cache[e]), i = i || "csv";
    var a = c.config[e] || {}, l = {csv: "text/csv", xls: "application/vnd.ms-excel"}[i],
        n = document.createElement("a");
    return r.ie ? o.error("IE_NOT_SUPPORT_EXPORTS") : (n.href = "data:" + l + ";charset=utf-8,\ufeff" + encodeURIComponent(function () {
      var i = [], a = [];
      return layui.each(t, function (t, l) {
        var n = [];
        "object" == typeof e ? (layui.each(e, function (e, a) {
          0 == t && i.push(a || "")
        }), layui.each(d.clearCacheKey(l), function (e, t) {
          n.push(t)
        })) : d.eachCols(e, function (e, a) {
          a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
        }), a.push(n.join(","))
      }), i.join(",") + "\r\n" + a.join("\r\n")
    }()), n.download = (a.title || "table_" + (a.index || "")) + "." + i, document.body.appendChild(n), n.click(), void document.body.removeChild(n))
  }
复制代码

替换为如下代码(区分ie,增加name传参自定义文件名字)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
d.exportFile = function (e, t, i, name) {
    t = t || d.clearCacheKey(d.cache[e]), i = i || "csv";
    var a = c.config[e] || {},  // 分页按钮
        l = {csv: "text/csv", xls: "application/vnd.ms-excel"}[i], // meta格式
        n = document.createElement("a"), // a 标签
        type = i,
        meta = l,
        title = a.title;
    if (r.ie) {
      var i = [], a = [];
      layui.each(t, function (t, l) {
        var n = [];
        "object" == typeof e ? (layui.each(e, function (e, a) {
          0 == t && i.push(a || "")
        }), layui.each(d.clearCacheKey(l), function (e, t) {
          n.push(t)
        })) : d.eachCols(e, function (e, a) {
          a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
        }), a.push(n.join(","))
      });
      var data = i.join(",") + "\r\n" + a.join("\r\n")
      navigator.msSaveBlob(new Blob(['\ufeff' + data], {type: meta + ';charset=utf-8;'}), name+ '.' + type)
    } else {
      return n.href = "data:" + l + ";charset=utf-8,\ufeff" + encodeURIComponent(function () {
        var i = [], a = [];
        return layui.each(t, function (t, l) {
          var n = [];
          "object" == typeof e ? (layui.each(e, function (e, a) {
            0 == t && i.push(a || "")
          }), layui.each(d.clearCacheKey(l), function (e, t) {
            n.push(t)
          })) : d.eachCols(e, function (e, a) {
            a.field && "normal" == a.type && !a.hide && (0 == t && i.push(a.title || ""), n.push(l[a.field]))
          }), a.push(n.join(","))
        }), i.join(",") + "\r\n" + a.join("\r\n")
      }()), n.download = (name || a.title || "table_" + (a.index || "")) + "." + i, document.body.appendChild(n), n.click(), void document.body.removeChild(n)
    }}

 

posted @   helloSWZ  阅读(324)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示