PHP样式表打印切换器的问题?

时间:2009-11-19 04:26:57

标签: php javascript css

我有很久以前创建的这种打印样式表切换器,并且知道它不会因为某些原因而工作,它假设在单击链接时切换到打印样式表并显示打印对话框。

但是知道它只会在FireFox中显示对话框,而不会在任何其他浏览器中显示,并且根本不会显示打印样式表。自从我玩PHP以来,有些人可以帮助我解决这些问题。

这是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[
onload = 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 $_SERVER['PHP_SELF']; ?>?css=print" id="print-page" title="Print Link">Print This Page</a>

2 个答案:

答案 0 :(得分:1)

如果它无法在IE中运行,请尝试以下方法:

window.onload = function(){ window.setTimeout('print()',100) };

这会稍微延迟通话,以便让IE有时间处理。

然而....

我只会列出两个样式表。由于style.css设置为media="screen"print.css将是浏览器用于格式化打印页面的唯一样式表:

<link rel="stylesheet" type="text/css" href="http://localhost/styles/style.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://localhost/styles/print.css" media="print" />

并设置如下的打印链接:

<a href="#" id="print-page" title="Print Link" onclick="print(); return false">Print This Page</a>

它可以节省对服务器的不必要的调用......并且可以完全避免你的问题。

答案 1 :(得分:0)

改变这个:

onload = print;

对此:

if(window.print())
  onload = window.print();
else
  onload = window.print;

如果你想要三元风格

onload = (window.print()) ? window.print() : window.print;

这将允许浏览器检查并查看它是否“看到”window.print功能。如果不能(如Opera的情况),则使用其他版本。

另外,请注意cleaning the $_SERVER["PHP_SELF"]值。