Не думаю, что вам нужно печатать событие. Все, что вам нужно сделать, это настроить ваши стили @media print
на основе ваших критериев JavaScript (?). Когда пользователь пытается распечатать страницу, применяется стиль @media print
, и ваши стили будут действовать:
<html>
<head>
<style id="styles" type="text/css">
@media print { .noprint { display:none; } }
</style>
<script type="text/javascript">
var x = Math.random();
if (x > .5) {
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = '@media print { .maybe_noprint { display:none; } }';
document.getElementsByTagName('head')[0].appendChild(style);
}
</script>
</head>
<body>
<div class="noprint">This will never print.</div>
<span class="maybe_noprint">This may print depending on the value of x.</span>
</body>
</html>
Если вы используете критерии на стороне сервера, чтобы определить, какие отпечатки, то просто выделите код на стороне сервера @media print
, чтобы при необходимости украсить классы. Кроме того, вы можете захотеть изменить существующий класс, который уже находится внутри @media print
, или создать новый CSS, используя что-то отличное от innerHTML
, что, я признаю, пахнет ужасно для меня, но, похоже, работает в Opera 9.6, Safari для Windows 3.1.2, IE 6 и Firefox 2.0.0.17 (я не тестировал другие браузеры).