Печать (скрытого) iframe печатает пустую страницу в IE

#javascript #html #angularjs #internet-explorer #iframe

#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.

Комментарии:

1. Какая версия IE? Вы получаете сообщение об ошибке в консоли разработчика?

2. Я использую IE 11.0.9600.18426. В консоли ошибка не отображается