2009-11-19 8 views
0

필자는 오래 전에 만든이 인쇄 스타일 시트 스위처를 가지고 있으며 링크가 클릭되었을 때 인쇄 스타일 시트로 전환하고 인쇄 대화 상자를 표시한다고 가정 할 때 어떤 이유로 작동하지 않는다는 것을 알고 있습니다.PHP 스타일 시트 인쇄 스위처 문제가 있습니까?

하지만 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 --> 

여기를 클릭하면 스타일 시트를 변경할 수 있습니다.

onload = print; 

이 사람 :이

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

Opera와 Chrome에서 인쇄 대화 상자가 나타납니다. – random

+0

Internet Explorer에 표시되지 않습니다. 이 문제를 해결할 수 있습니까? – jab

+0

인쇄 CSS가 보이지 않는 이유는 무엇입니까? 인쇄물, 종이 또는 PDF 인 경우에만 나타납니다. 화면에 표시되지 않습니다. – random

답변

0

변경

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

이 브라우저 확인 할 수

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

원계 스타일을 원한다면 및 그것이 "보는지"확인하십시오 window.print 기능. 그것이 (오페라의 경우처럼) 할 수 없다면 다른 버전을 사용하십시오.

또한 cleaning the $_SERVER["PHP_SELF"] 값에주의하십시오.

+0

지금은 오페라에서 작동하지 않습니다. 스타일 시트가 표시되지 않음 – jab

+0

'print'기능을 다르게 호출하는 Opera 및 다른 브라우저의 경우를 위해 편집했습니다. – random

1

의 IE에서 작업이 시도하지 않는 경우 :

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

이것은 IE를 처리 할 시간을주기 위해 전화를 조금 지연됩니다. 그러나

....

난 그냥 항상 두 스타일 시트를 나열합니다.

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

그것은이를 절약 할을 style.cssmedia="screen"로 설정되어 있기 때문에, print.css 유일한 스타일 시트가 인쇄 된 페이지의 형식을 브라우저에 의해 사용됩니다 불필요한 서버 호출 ... 귀하의 모든 문제를 피할 수 있습니다.