окно теряет фокус после печати ярлыка (Ctrl + P) используется для печати в нем Iframe - PullRequest
1 голос
/ 11 марта 2019

Я работаю над экраном, который содержит только iframe, и в этом iframe есть таблица, которую мне нужно распечатать. Я использовал следующий код, чтобы сделать это

jQuery(window).on("keyup keydown", function(e){
      if(e.ctrlKey && e.keyCode == 80){
          window.frames['tableToPrint'].focus();
          window.frames['tableToPrint'].print();
      }
   });

Этот код работает только в первый раз. Я имею в виду, я набираю свой URL, который открывает веб-страницу, и iframe в нем открывается, как и должно. Я нажимаю Ctrl + P, который открывает диалоговое окно печати браузера, чтобы получить копию в формате PDF, и, если я проверяю это, я получаю свой PDF, как я хочу. После первого раза, когда я пытаюсь, я получаю пустой PDF.

После отладки это выглядит так, как только окно печати браузера закрывает фокус от iframe, и события, которые я связал впоследствии, не работают.

Я пытался

var iframe = $("#tableToPrint")[0];
iframe.contentWindow.focus();

Я пытался

window.onafterprint = function(e) {
   $('#tableToPrint').focus();
};

Среди прочего, что я мог найти в сети, но они не работают. Он ведет себя так, как будто события после оператора print не работают, и похоже, что они теряются, а браузер ему неизвестен.

Помощь очень ценится

1 Ответ

0 голосов
/ 11 марта 2019

Я немного поэкспериментировал с этим, и из того, что я вижу, не представляется возможным вызвать .print () для элемента, не являющегося окном, что означает, что ваш код должен выдавать следующую ошибку каждый раз он выполняет:

Uncaught TypeError: window.frames.tableToPrint.print не является функцией

И из того, что я вижу, фокус не имеет значения и при печати ...

поэтому мой вопрос к вам: вы пробовали печатать без какого-либо кода JQuery / JS? Это само по себе уже обеспечивает то, что вы желаете?

Также см. https://developer.mozilla.org/en-US/docs/Web/API/Window/frames для получения дополнительной информации о свойстве window.frames.

(следующий ответ от меня будет через 16 часов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...