我正在尝试将“data:application”类型的URI添加到<a>
标记href属性。
这是我使用的代码:
var TestFuntion = (function() {
var uri = 'data:application/vnd.xls;base64,'
, template = '<table>{table}</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: 'test.xls' || 'Worksheet', table: table.innerHTML}
var x = ( uri + base64(format(template, ctx))).toString();
$('#testLink').attr('href',x)
}
})()
我尝试了使用setAttribute和link.href引用的不同方法来添加链接但没有成功。此代码示例适用于firefox和chrome。
我认为问题在于我尝试添加的href
字符串真的很像10k + charecters。
这是链接html:
<a id="testLink" download="Test.xls">
答案 0 :(得分:0)
所有网络浏览器都限制了网址的长度。此外,服务器也有这些。通常,一个长得太长的URL表示您在进行POST时尝试使用GET。
如果您尝试连接的服务器是您自己的(我认为是),那么您应该使用POST来发送如此庞大的数据调用。如果您绝对需要GET,我会考虑将您的URL重新格式化为几个GUID或类似的东西。