IE + XMLHttp + CreateObjectURL错误

时间:2016-01-12 10:33:01

标签: javascript html5 iframe internet-explorer-10

我正在尝试下载并在iFrame中显示远程文件的内容,并且除IE之外的所有浏览器都成功(我正在尝试使用IE 10)。 我已经使用XMLHttpRequest,Blob,CreateOBjectUrl API来完成这个过程。

在IE中,我无法查看iFrame中的文件内容,也没有在控制台上显示特定的错误消息。

我已将代码粘贴在此主题的底部,并按步骤解释如下

  1. 获取下载文件网址&相应的哑剧 类型(所有broswers都非常好)。
  2. 调用XMLHttp请求,a Http GET异步调用,响应类型为' arraybuffer' (完美 在所有浏览器中都很好)完成XMLHttpGet以下3个步骤 执行。
  3. 使用正确的mimetype创建blob;(在所有其他浏览器中完全正常,通过使用MSSaveOrOpenBlob方法在IE中下载它来专门验证blob)。 4.InOrder将blob内容绑定到iFrame,使用" createObjectURL"创建blob url; (在所有浏览器中都非常好,但在IE中我们没有得到完美的URL)。
  4. 最后将网址与iFrame绑定以供显示。
  5. 下面的代码段。

    // Getting the document url and mime type ( Which is perfectly fine )
    
      var downloadUrl=finalServerURL + "DocumentService.svc/GetItemBinary?id=" + itemId + "&version=" + version;
    
    var mimeTypeForDownload = responseStore.mimeTypes[currentlySelectedObject.fileExtension];
    
    
    
      window.URL = window.URL || window.webkitURL;
    
    //Defining the XML Http Process
    
                    var xhr = new XMLHttpRequest();
    
                    xhr.open('GET', downloadUrl, true);
    
                    xhr.responseType = 'arraybuffer'; //Reading as array buffer .
    
                    xhr.onload = function (e) {
    
                        var mimeType = mimeTypeForDownload;
    
                        var blob = new Blob([xhr.response], { type: mimeType });
    
                        // Perfect blob, we are able to download it in both IE and non-IE browsers
    
    
    
                        //This below url  from createObjectURL,
    
                        //Working perfectly fine in all non-IE browsers, but nothing happening in IE
    
                        var url = window.URL.createObjectURL(blob);
    
    
    
                    document.getElementById(documentContentiFrameId).setAttribute("src", url);
    
    
    
                    };
    
                    xhr.send;
    

    如果你得到任何相关信息,请告诉我,这将非常有帮助。

1 个答案:

答案 0 :(得分:1)

我开始知道在IE中无法为你的blob条目获取正确的URL,我的尝试都没有成功。 我的替代方案, 1)转到pdf.js,一个开源的javascript库,它允许渲染pdf二进制文件和等效的pdf blob。 2)利用开放的PDF库编写自己的观众,这将耗费大量时间,并且需要更多的学习努力。

谢谢, 毗

相关问题