0

我有这个用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 中不起作用,没有错误,没有响应。只是保持安静。

4

2 回答 2

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();
于 2013-09-06T21:21:35.807 回答
0

检查 SO,您似乎应该尝试直接修改位置,而不是属性或 iframe。

像这样:

iframe[0].contentWindow.location.href = url;

编辑

显然不是错误,而是安全功能:http: //msdn.microsoft.com/en-us/library/cc848897 (v=vs.85).aspx

查看该页面上的第三条评论:

DATA URI 不能导航到的限制(例如不能用作 IFRAME 的源)仍然存在。

于 2013-09-06T11:51:34.093 回答