Jquery函数在Firefox中有效,但在IE 9中不起作用

时间:2013-09-06 11:30:06

标签: javascript jquery

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

2 个答案:

答案 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();