Закрытие окна до того, как содержимое перейдет в принтер (JavaScript) - PullRequest
2 голосов
/ 13 января 2012

У меня есть следующий блок кода, который открывает новое окно браузера с текущим содержимым окна, за исключением урезанного макета для печати. Затем он отправляет новую страницу на принтер и, наконец, закрывает страницу. У меня проблема в том, что новое окно закрывается до того, как на вкладку принтера поступят все данные. Возможно обратный вызов от print (), который тогда вызывает close () после завершения? Как бы я пошел о реализации этой функциональности? Заранее спасибо.

ПЕЧАТАТЬ ЛИСТИНГ

<script type="text/javascript">
    function generate_url()
    {
        //var go_href = 'http:<?php echo BASE_URL ?>/admin/reservations/print_list';
        myWin = window.open('http:<?php echo BASE_URL ?>/admin/reservations/print_list');
        myWin.focus();
        myWin.print();
        myWin.close()
        return false;
    }

</script>

Ответы [ 4 ]

2 голосов
/ 13 января 2012

Я не думаю, что есть какая-либо функция обратного вызова для печати. Я предлагаю вам отложить закрытие окна, что может помочь:


myWin.focus();
myWin.print();
setTimeout(function(){
   myWin.close();
}, 6000);

Надеюсь, это поможет каким-то образом

0 голосов
/ 26 августа 2012

Спасибо Pumbaa80, но IE6 / 7 - это eval!

так что я тестирую в ie / 7, все работает!

на родительской странице:

var printIframe = document.getElementById('printIframe');
printIframe.src = 'print.php';

<iframe id="printIframe" style="width: 0; height: 0;" />

на печатной странице:

<body onload="this.focus(); this.print();">
0 голосов
/ 13 января 2012

Не открывайте новое окно, но загружайте содержимое для печати в скрытом фрейме

 var ifr = document.createElement('iframe');
 ifr.style.display = 'none';
 ifr.src = '/admin/reservations/print_list';
 ifr.onload = function () {
      ifr.contentWindow.print();
 }
 document.body.appendChild(ifr);

Вы можете использовать этот iframe позже для дальнейшей печати, удалить его после смехотворно долгого времени ожидания или просто оставить его на странице.

0 голосов
/ 13 января 2012

Избавьтесь от JavaScript и новой страницы полностью.Используйте таблицу стилей для печати, чтобы вырезать (display: none) содержимое, которое вы не хотите печатать.

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