这部分代码在Chrome中运行良好,但在IE和Edge中,它没有。
HTML
<object id="pdfObject" ng-hide="$ctrl.item == false" data="{{content}}" type="application/pdf" style="height: 100%;width: 100%;padding-bottom: 40px;">
<embed id="pdfEmbed" ng-src="{{content}}" type="application/pdf" style="height: 100%;width: 100%;"/></object>
JS
var file = new Blob([this.item], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
$scope.content = $sce.trustAsResourceUrl(fileURL)
this.item有来自HTTP呼叫的响应。
答案 0 :(得分:0)
在embed标签中,属性src应该用blob文件的url填充,将内容更改为fileURL变量,并且应该是固定的
var file = new Blob([this.item], { type: 'application/pdf' });
$scope.fileURL = URL.createObjectURL(file); //here is the change
$scope.content = $sce.trustAsResourceUrl(fileURL)
和
<embed id="pdfEmbed" src="{{fileURL}}" type="application/pdf" style="height: 100%;width: 100%;"/>
问题是$ sce.trustAsResourceUrl返回的对象与src不匹配