Определите, будет ли нажата кнопка "Печать/Отмена" в Google Chrome Preview Preview Preview

Я печатал свою страницу, используя код ниже:

window.print();

Изображение ниже - это то, как выглядит предварительный просмотр в браузере Google Chrome. Он имеет две основные кнопки: print и cancel.

enter image description here

Я хочу знать, нажал ли пользователь кнопки print или cancel. То, что я сделал, использует jquery:

HTML-код предварительного просмотра:

<button class="print default" i18n-content="printButton">Print</button>
<button class="cancel" i18n-content="cancel">Cancel</button>

Код Jquery:

 $('button > .cancel').click(function (e) {                
      alert('Cancel');
 });

 $('button > .print').click(function (e) {                
      alert('Print');
 });

Я попробовал код выше без удачи. Что мне не хватает?

Ответ 1

Вы не можете получить доступ к внутренним окнам Chrome (в данном случае диалоговому окну печати) напрямую с обычной веб-страницы.

    (function () {

        var beforePrint = function () {
            alert('Functionality to run before printing.');
        };

        var afterPrint = function () {
            alert('Functionality to run after printing');
        };

        if (window.matchMedia) {
            var mediaQueryList = window.matchMedia('print');

            mediaQueryList.addListener(function (mql) {
                //alert($(mediaQueryList).html());
                if (mql.matches) {
                    beforePrint();
                } else {
                    afterPrint();
                }
            });
        }

        window.onbeforeprint = beforePrint;
        window.onafterprint = afterPrint;

    }());

Или, если вы хотите что-то сделать, когда открывается предварительный просмотр, попробуйте следующее:

$(document).bind("keyup keydown", function (e) {
         if (e.ctrlKey && e.keyCode == 80) {
             setTimeout(function () { CallAfterWindowLoad();}, 5000);
             return true;
         }
     });

    function CallAfterWindowLoad()
    {
        alert("Open and call");
    }

Ссылка: Как записать событие щелчка в меню печати по умолчанию, вызываемом Javascript window.print()

Может быть, если вы предоставите свои требования для этого события нажатия двух кнопок, мы можем предложить вам альтернативное решение.

Ответ 2

Насколько я знаю, предварительный просмотр печати не является частью любого document, к которому может обратиться ваш JS. Они могут вас заинтересовать:

Обнаружение события печати в браузере

ExtJS 4 - обнаружение, если пользователь нажал кнопку" Печать " в диалоговом окне печати, которое было названо программным образом

Ответ 3

Это должно сделать трюк. Я использовал jQuery v2.2.0, который включен в html файл.

$("#print").click(function() { // calls the id of the button that will print
    document.body.style.visibility = 'hidden'; //code for hiding the body
    document.getElementById('printthis').style.visibility = 'visible'; // div to be printed
    document.getElementById('printthis').style.position = 'absolute'; //some code/css for positioning. you can adjust this
    document.getElementById('printthis').style.top = '40px';
    document.getElementById('printthis').style.left = '0px';
    if (print()) { // shows print preview.

    } else { // else statement will check if cancel button is clicked.
        document.body.style.visibility = 'visible';
        document.getElementById('printthis').style.position = '';
        document.getElementById('printthis').style.top = '';
        document.getElementById('printthis').style.left = '';
        alert("Print Canceled");
    }
});

Я предполагаю, что это также можно использовать как способ печати определенных div в вашем html. Просто скройте элемент body и покажите только div, который вы хотите распечатать, с некоторым позиционированием css. Надеюсь, это сработает. Я попробовал, и могу сказать, что это сработало для меня.

Ответ 4

это очень легко возможно:

<body onafterprint="myFunction()">

Функция myFunction(), которую вы можете определить в теге, сработает, когда будет выполнено задание на печать или нажата кнопка отмены.