PHP stil baskı switcher sorunlar?

2 Cevap php

Ben uzun zaman önce yarattığı bu baskı stil sayfası switcher var ve bu alışkanlık onun bağlantı tıklandığında bir baskı stil sayfasına geçmek ve yazdırma iletişim kutusunu görüntülemek için varsayalım nedense, için çalıştığını biliyoruz.

Ama sadece FireFox iletişim kutusunu görüntülemek ve herhangi başka bir tarayıcıda ve tüm baskı stil sayfasını görüntülemek olmayacağını biliyorum. Bazı biri PHP ile etrafında oynanan bu yana bir süre oldu gibi bana bu sorunları gidermek yardımcı olabilir.

Burada PHP kodudur.

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

Ve burada stil sayfasını değiştirmek için tıklayın link.

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

2 Cevap

Onun IE çalışma değilse, bu deneyin:

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

Bu IE işlemek için zaman vermek çağrıma sadece biraz gecikme olacak.

However....

Ben sadece her zaman iki stil listelemek. style.css ayarlanmış olduğundan media="screen", print.css sadece stil yazdırılan sayfayı biçimlendirmek için tarayıcı tarafından kullanır olacaktır:

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

Ve böyle baskı bağlantıyı kurmak:

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

Bu sunucuya gereksiz çağrı kaydetmek istiyorsunuz ... ve tamamen sorunu önlemek olabilir.

Bu değiştirin:

onload = print;

Buna:

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

Bir üçlü tarzı bunu isteseydim

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

Bu tarayıcı kontrol ve window.print function "görür" olmadığını görmek için izin verir. O (Opera durumunda olduğu gibi) yapamıyorsanız, o zaman başka bir sürümünü kullanıyorsanız.

Ayrıca, cleaning the $_SERVER["PHP_SELF"] değeri hakkında dikkatli olun.