Определите, будет ли нажата кнопка "Печать/Отмена" в 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(), которую вы можете определить в теге, сработает, когда будет выполнено задание на печать или нажата кнопка отмены.