Подтвердить что ты не робот

Как запустить javascript при печати?

Возможно ли инициировать событие javascript, когда пользователь печатает страницу? Я хотел бы удалить зависимость от библиотеки javascript, когда пользователь выбирает печать страницы, так как библиотека отлично подходит для экрана, но не для печати. ​​

Любая идея, как достичь этого?

4b9b3361

Ответ 1

Для тех, кто наткнулся на этот ответ от Google, позвольте мне попытаться разобраться:

Как отметил Аджай, для печати есть два события, но они плохо поддерживаются; насколько я читал, они поддерживаются только в браузерах Internet Explorer и Firefox (6+). Эти события - window.onbeforeprint и window.onafterprint, которые (как и следовало ожидать) будут срабатывать до и после задания печати.

Однако, как указано в ссылке Джо (fooobar.com/questions/273213/...), это не совсем так, как это реализовано во всех случаях. В большинстве случаев оба события срабатывают перед диалогом; в других случаях выполнение script может быть остановлено во время диалога печати, поэтому оба события могут срабатывать одновременно (после завершения диалога).

Для получения дополнительной информации (и поддержки браузера) для этих двух событий:

https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeprint

https://developer.mozilla.org/en-US/docs/DOM/window.onafterprint

Короткий ответ: если вы надеетесь помешать потоку печати, не делайте этого. Если вы надеетесь запустить код после печати, он не будет работать, как вы хотите; ожидайте плохой поддержки браузера и старайтесь грамотно деградировать.

Ответ 2

Это может быть сделано путем перезаписи, например, window.onbeforeprint.

Используя Chrome, я обнаружил, что работает более загадочный window.matchMedia("print").addListener(function() {alert("Print Dialog open.")}).

Эта спорная функция может использоваться, чтобы удержать пользователей от печати страницы.

Я впервые встретил его на Scribd. Там, если вы откроете диалоговое окно печати с помощью команды меню, содержимое страницы будет выделено серым цветом, и появится сообщение с предупреждением о том, почему вы не можете распечатать страницу. (Примечание для полного анализа: на этой странице control-p также переопределяется, поэтому вы не можете использовать его, чтобы открыть диалог печати вообще. Кроме того, есть CSS-код @media для вывода принтера, который скрывает содержимое, все тестируются в Firefox).

Ответ 3

если у вас есть сценарий, в котором вы хотите что-то сделать перед открытием диалогового окна печати или сразу после отправки документа в очередь принтера, используйте следующие события window.onafterprint, window.onbeforeprint

Ответ 4

Для тех, кто приступает к поиску опции с помощью Bootstrap, как и я, я использовал следующий код для достижения этого при нажатии кнопки печати. Этот не будет работать, когда они нажимают CTRL + P.

$("#print_page").click(function(){
$("#print_section").addClass('visible-print-block');
window.print();
$("#print_section").removeClass('visible-print-block');})

Вам нужно добавить скрытую печать на все, что вы не хотите печатать, а затем добавить идентификатор (или класс, если у вас есть несколько разделов) print_section, на бит, который вы хотите распечатать! Немного взломанный, но он работает!