Проблема переключателя печати таблиц стилей PHP? - PullRequest
0 голосов
/ 19 ноября 2009

Хорошо, у меня есть этот переключатель таблиц стилей, который будет работать, только если я пропущу media = "print" из ссылки на таблицу стилей.

Мне было интересно, как я могу решить эту проблему, не пропуская атрибут media = "print" .

Вот код PHP.

<!-- Print Script -->
<?php if (isset($_GET['css']) && $_GET['css'] == 'print') { ?>
<meta name="robots" content="noindex" />
<link rel="stylesheet" type="text/css" href="http://localhost/styles/print.css" media="print" />
<script type="text/javascript">
//<![CDATA[
if(window.print())
  onload = window.print();
else
  onload = window.print;
//]]>
</script> 
<?php } else { ?>
<link rel="stylesheet" type="text/css" href="http://localhost/styles/style.css" media="screen" />
<?php } ?>
<!-- End Print Script -->

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

<a href="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>?css=print" id="print-page" title="Print">Print This Page</a>

1 Ответ

2 голосов
/ 19 ноября 2009

Вам не нужен код PHP для определения необходимости вывода файла CSS для печати. По умолчанию браузер не отображает таблицу стилей «print» и должен игнорировать таблицу стилей «screen» при печати.

Могут быть некоторые проблемы с рендерингом: возможно, браузеру не хватило времени на рендеринг страницы и ее правильную подачу на принтер.

Упрощенное решение будет:

<head>
<link rel="stylesheet" type="text/css" href="http://localhost/styles/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="http://localhost/styles/style.css" media="screen" />
<script type="text/javascript">
function print_it() {
if(window.print())
  onload = window.print();
else
  onload = window.print; 
}
</script>
</head>

<body>
<a href="javascript:print_it();" id="print-page" title="Print">Print This Page</a>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...