Обнаружение события печати в браузере
Можно ли обнаружить, когда пользователь печатает что-то из своего браузера?
Чтобы усложнить ситуацию, если мы представляем пользователя с PDF-документом в новом окне, можно ли обнаружить печать этого документа (если пользователь распечатает его из окна браузера)?
Самое близкое, что я смог найти, - это реализовать пользовательские функции печати (что-то вроде this) и отслеживать, когда это вызывается
В первую очередь меня интересует решение, которое работает для Internet Explorer (6 или новее)
Ответы
Ответ 1
Теперь вы можете обнаружить запрос на печать в IE 5+, Firefox 6+, Chrome 9+ и Safari 5+, используя следующую технику:
(function() {
var beforePrint = function() {
console.log('Functionality to run before printing.');
};
var afterPrint = function() {
console.log('Functionality to run after printing');
};
if (window.matchMedia) {
var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql) {
if (mql.matches) {
beforePrint();
} else {
afterPrint();
}
});
}
window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;
}());
Более подробно я расскажу о том, что это делает и что его можно использовать для http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/.
Ответ 2
Для Internet Exploder существуют события window.onbeforeprint
и window.onafterprint
, но они не работают с каким-либо другим браузером, и в результате они обычно бесполезны.
Похоже, что они работают точно так же по какой-то причине, оба выполняют свои обработчики событий до того, как откроется окно печати.
Но если вы этого хотите, несмотря на эти оговорки, вот пример:
window.onbeforeprint = function() {
alert("Printing shall commence!");
}
Ответ 3
Если это возможно только для отслеживания, возможно, вы можете установить фоновый url в печатных СМИ CSS на страницу сервера (.aspx,.php и т.д.), а затем сделать что-то на сервере?
Этот парень утверждает, что он работает.
Это не так, как решение TJ, но оно может быть менее ошибочным (см. сообщение в блоге TJs для проблем, которые он нашел), когда требуется только отслеживание.