tableToExcel jQuery在IE中引发奇怪的错误

我正在使用jQuery函数将我的HTML表导出到Excel。 这是我在很多其他地方使用的function,它在Chrome中适用于我:

var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,' , template = '{table}
' , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML } window.location.href = uri + base64(format(template, ctx)) } })()

但是,在IE 10中,这一行:“window.location.href = uri + base64(format(template,ctx))” – 抛出错误:“SCRIPT122:传递给系统调用的数据区域太小了。”

我做了一些研究,似乎IE由于某种原因无法处理URI的长度。 有没有解决方法?

你我的朋友遇到了大麻烦(开玩笑)!

旧版IE的主要问题是对base64编码的支持,可以使用这个Javascript库来处理 。

但主要问题是基于WebKit的浏览器上可用的数据URL方案,您可以在基于RCA 2397的IE上使用它。它具有有限的function,主要用于图像和CSS。 这是一个有用的链接。 另请务必阅读数据URL方案的Wikipedia页面

**现在谈谈解决方法! **

主要的解决方案是编写一个创建Excel文件的服务器端脚本,然后使用Ajax调用将其发送回用户! 您甚至可以将该文件存储在服务器的Filesystem上,然后只发送该文件的地址。

虽然如果你主要关注客户端并且你真的需要在IE上工作,你应该使用下载库,最好是那些有swf(Flash支持)的人,这是我还没有用过的,虽然我希望得到你正在寻找的结果。 有人声称downloadify做得很好,让我知道它是怎么回事!