Я пытаюсь решить этот вопрос, и сегодня у меня был небольшой успех. Я думаю, что могу сделать код ниже, если я знаю только, какое событие было запущено, когда вызывается функция window.print()
.Какое событие вызывается при вызове window.print()?
var browser_name = navigator.appName;
if(browser_name == 'Microsoft Internet Explorer'){
window.attachEvent("print()",on_print_function);//I realize I cannot attach an event listener to a function, I just wanted you to see what I am trying to accomplish
}
else{
window.addEventListener("print()",on_print_function,false);
}
Функция, которая вызывается, когда print
событие происходит возвращает страницу, которая хранит некоторую информацию в базе данных.
Моя цель заключается в том, чтобы печать страницы была ТОЛЬКО, если информация, о которой идет речь, будет храниться в базе данных. Я открыт для лучших способов решения этой проблемы, но я думаю, что у меня все будет хорошо, если я могу просто получить событие для print()
, как я уже сказал.
EDIT
Я даю на это сейчас, я остановился еще один способ делать то, что я хочу. Я с нетерпением жду того дня, когда FireFox поддерживает onbeforeprint()
и onafterprint()
.
Кнопка печати является вариант, но я действительно хочу, чтобы поймать, когда люди идут в 'Файл> Печать '. Функция 'onbeforeprint()' будет работать для меня, если бы я был связан только с IE, но мне тоже нужно работать в FireFox. Мой другой вопрос имеет такую справочную информацию: http://stackoverflow.com/questions/3339789/onbeforeprint-and-onafterprint-equivalent-for-non-ie-browsers-php-mysql-ja – ubiquibacon
Ну, насколько я знаю другие браузеры не поддерживают эти события, и у вас будут проблемы с ними. Возможно, несколько иной подход. Являются ли эти данные формой на странице? Могут ли эти данные быть отправлены на pageload? Возможно ли перемещение пользователя на страницу для печати после кнопки «Отправить» на странице? – sTodorov
Проблема в том, что страница, с которой я имею дело, представляет собой серию клиентских счетов, которые будут автоматически отправляться по почте при печати. Страница является просто обзором, если пользователь не распечатывает страницу, но если они печатают страницу, тогда необходимо обновить базу данных, чтобы сказать, что счета были напечатаны и отправлены по почте.Я не могу воспользоваться возможностью, чтобы пользователь печатал счета, а база данных не обновлялась. Мне нужно, чтобы они произошли один за другим. – ubiquibacon