打印(隐藏)iframe在IE上打印空白页

时间:2016-10-21 15:57:25

标签: javascript html angularjs internet-explorer iframe

所以,首先我尝试了在SO上发现的类似问题中提出的几个解决方案,但到目前为止我还没有找到一种方法使其发挥作用。

在我看来,我有:

<iframe ng-if="clientPDFUrl" id="clientPDF" 
        ng-src="{{originURL + clientPDFUrl}}" ng-hide="true">
</iframe>
<iframe ng-if="CACPDFUrl" id="CACPDF" 
        ng-src="{{originURL + CACPDFUrl}}" ng-hide="true">
</iframe>

然后我有一个这样的模态:

<div class="modal-header">
  <h3 class="modal-title">Printing</h3>
</div>
<div class="modal-body">
  <button ng-click="localPrintPDF('CACPDF')" 
          class="btn btn-normal generate-pdf-button">Print for CAC
  </button>
  <button ng-click="localPrintPDF('clientPDF')"
          class="btn btn-normal generate-pdf-button">Print for client
  </button>
</div>
<div class="modal-footer">
  <button ng-click="cancel()" class="btn btn-normal">Annuler</button>
</div>

最后是控制器:

angular.module('app.edition').controller('printingModalController', [
  '$scope', '$rootScope', '$state', '$stateParams', '$modalInstance', 'APIClientService',
  function($scope, $rootScope, $state, $stateParams, $modalInstance, APIClientService) {
    $scope.localPrintPDF = function(frameId) {
      var frameContent = document.getElementById(frameId).contentWindow;

      frameContent.document.execCommand('print', false, null);
    };

    $scope.cancel = function() {
      $modalInstance.dismiss(false);
    };
  }
]);

因此,这在Chrome中运行良好,但使用IE打印空白页。

到目前为止我尝试过的事情:

  • ng-hide="true"
  • 替换style="width: 0px; height: 0px;"
  • 使用frameContent.print()代替frameContent.document.execCommand('print', false, null);
  • 在使用focus()
  • 之前使用print()
  • 使用window.frames[frameId].print()(首先使用focus()

那么,有什么建议让IE上的打印工作?我可以使用别的东西而不是iframe。

0 个答案:

没有答案