我有很久以前创建的这种打印样式表切换器,并且知道它不会因为某些原因而工作,它假设在单击链接时切换到打印样式表并显示打印对话框。
但是知道它只会在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>
答案 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的情况),则使用其他版本。