我用jquery编写了这个函数。
var str1 = "This is a sample text";
var url = "data:text/csv;charset=utf-8," + str1;
self.downloadURL(url);
这里是'downloadUrl'函数定义:
self.downloadURL = function (url) {
var iframe = $("#hiddenDownloader");
if (iframe.length == 0) {
iframe = $('<iframe/>', {
id: "hiddenDownloader",
style: {
display: 'none'
}
}).appendTo(document.body);
}
$(iframe).attr("src", url); // i guess this line is the culprit.
}
此功能在Firefox中运行正常,方法是打开“打开/保存”对话框,在本地计算机中打开/保存给定文本。
但是,它在IE 9中不起作用,没有错误,没有响应。保持安静。
答案 0 :(得分:0)
检查SO似乎您应该尝试直接修改位置,而不是属性或iframe。
像这样:
iframe[0].contentWindow.location.href = url;
修改强>
不是错误,但显然是安全功能:http://msdn.microsoft.com/en-us/library/cc848897(v=vs.85).aspx
查看该页面上的第3条评论:
无法导航数据URI的限制(例如,不能 用作IFRAME的来源)仍然存在。
答案 1 :(得分:0)
简单的答案是,由于安全限制,不允许数据URI填充IE中的iframe。此外,当您将iframe插入DOM而不首先设置src属性时,IE可能会表现得很奇怪。试试这个,来自http://sparecycles.wordpress.com/2012/03/08/inject-content-into-a-new-iframe/:
var newIframe = document.createElement('iframe');
newIframe.width = '200';newIframe.height = '200';
newIframe.src = 'about:blank';
document.body.appendChild(newIframe);
var myContent = '<!DOCTYPE html>'
+ '<html><head><title>My dynamic document</head>'
+ '<body><p>Hello world</p></body></html>';
newIframe.contentWindow.document.open('text/html', 'replace');
newIframe.contentWindow.document.write(myContent);
newIframe.contentWindow.document.close();