Можно ли показать предупреждение, когда пользователь говорит браузеру распечатать страницу? - PullRequest
2 голосов
/ 09 июня 2011

Клиенту необходимо, чтобы пользователю показывалось предупреждение при попытке распечатать (либо с помощью Ctrl + P, либо Файл / Печать) что-либо из браузера, например «Не забудьте распечатать более x страниц» или что-то вродетот.Возможно ли это, используя Javascript, CSS или любой другой подход?

Ответы [ 4 ]

4 голосов
/ 09 июня 2011

К сожалению нет.Вы можете вызвать диалог печати из JavaScript, но не можете его перехватить.Единственный способ сделать что-то подобное - использовать ActiveX только в Internet Explorer, что просто ужасно.

1 голос
/ 28 ноября 2013

Есть решение с window.onbeforeprint / window.matchMedia

function beforePrint() {
    alert('Remember print only X copies');
}
function afterPrint() {
    //do something
}

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://jsfiddle.net/mowglisanu/FY4q2/

Обнаружение запросов на печать с помощью JavaScript

По какой-то причине в Chrome дважды запускается предварительная печать.

1 голос
/ 09 июня 2011

Это невозможно. Своим обходным решением может быть открытие соответствующей страницы в отдельном окне без меню. Таким образом, пользователь не может нажать File-> Print напрямую. Если вы хотите быть уверены, что вы также можете захватить правую кнопку мыши и предотвратить открытие контекстного меню.

Затем вы включите ссылку «распечатать страницу» в javascript, включая ваше предупреждение.

Не очень элегантно - я знаю.

1 голос
/ 09 июня 2011

однако вы можете использовать css, чтобы остановить печать

<style type="text/css" media="print">
body{visibility:hidden;} or use display:none;
</style>
...