mrt*_*ugh 10 javascript pdf internet-explorer blob angularjs
我有一个Web服务,它将客户端的文件作为arraybuffer发送,然后将其读入blob对象:
$scope.contentType = response.headers["content-type"];
$scope.file = new Blob([response.data], { type: $scope.contentType });
$scope.fileUrl = URL.createObjectURL($scope.file);
$scope.content = $sce.trustAsResourceUrl($scope.fileUrl);
Run Code Online (Sandbox Code Playgroud)
我使用对象标记作为容器:
<object id="documentContainer" ng-show="loaded" ng-attr-type="{{contentType}}" ng-attr-data="{{content}}" class="document-container"></object>
Run Code Online (Sandbox Code Playgroud)
这在FF,Chrome,移动浏览器,由外来物种开发的Web浏览器中非常有用,这些物种从未接触过人类等,但在IE中却没有.
当设置了object标签的data参数时,IE会在控制台中响应
错误:访问被拒绝.
这似乎是IE中的某种安全功能,它不希望将文件用作源,因为它驻留在客户端计算机上.即使您使用javascript创建具有数据源集的全新dom元素,它也禁止访问.
Microsoft提供了自己的blob方法,如msSaveOrOpenBlob,但我需要能够将该文件嵌入浏览器,而不是提示用户在外部应用程序中打开该文件.
有没有人知道在IE中嵌入blob(可以是各种各样的文件类型)的变通方法或方法?我不愿意为了容纳IE而彻底重构Web服务和前端代码,但看起来可能就是这种情况.
我认为答案是“不”。我们的网站会动态生成 PDF,但我们会嗅探浏览器以了解可以对返回的 PDF 执行哪些操作。
示例: http: //www.cloudformatter.com/CSS2Pdf.Demos.Structures
如果您使用的是 Chrome,您可以在此处选择“嵌入 PDF”,它的工作方式就像一个魅力……如果您使用的是 IE,即使您选择“嵌入”,它也会下载该文件。因为 IE 不能,我们只是将 IE 上的任何人重新路由到下载代码。
http://caniuse.com/#feat=datauri
不要让我们开始了解 IE 上还有什么问题,有几个页面刚刚损坏,因为 IE 停止序列化文档中某些“p”标签的结束标签。
| 归档时间: |
|
| 查看次数: |
3886 次 |
| 最近记录: |