重新审视PHP样式表打印切换器问题?

时间:2009-11-19 06:29:18

标签: php javascript css

好的,我有这个样式表切换器只有在我从样式表链接中省略 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 个答案:

答案 0 :(得分:2)

您不需要PHP代码来确定是否输出用于打印的CSS文件。默认情况下,浏览器不会呈现“打印”样式表,并且在打印时应忽略“屏幕”样式表。

可能存在一些渲染问题:浏览器可能没有足够的时间来渲染页面并将其正确地提供给打印机。

简化的解决方案是:

<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>