2011-04-06 5 views
2

window.print이 시작되기 전에 내용이 전환 된 javascript 함수를 만든 다음 페이지를 프린터로 보낸 후 내용을 다시 전환하려고합니다. document.body.onfocus을 사용해 보았지만 일부 인쇄 방법 (예 : PDF로 인쇄)은 페이지가 실제로 인쇄되기 전에 body으로 포커스를 되돌려 원래 내용으로 바꿉니다.자바 스크립트를 사용하여 프린터로 전송되는 페이지를 수신 대기하는 방법이 있습니까?

function printNewContent() { 
      var title = document.getElementById("OriginalTitle"); 
      var secondtext = document.getElementById("TextBlock2"); 
      var copy = document.getElementById("StandardCopy"); 
      var origtitle = title.innerHTML; 
      var origcopy = copy.innerHTML; 
      var newcopy = document.getElementById("NewCopy").innerHTML; 

      title.innerHTML = "New Title"; 
      copy.innerHTML = newcopy; 
      secondtext.className = "displayNone"; 
      window.print(); 

      //Listen for page to be sent to the printer 

      title.innerHTML = origtitle; 
      copy.innerHTML = origcopy; 
      secondtext.className = "PrintOnly SecondTxt"; 
     } 

내가 onfocus 접근 방식과 함께 지연을 사용하지만 절대 안전한 방법이 아니다 : 여기

내가 지금 가지고 있고, 내가 맞지 것이 필요 생각 청취자가 어디에 무엇인가 , 나는 가능한 한 안정되고 일관된 것을 찾고 있습니다. 어떤 제안이라도 대단히 감사하겠습니다. 감사!

답변

3

다른 방법이 될 것이다이되는 때 귀하의 사이트에/숨기기 내용을 표시하기 위해 CSS media query를 사용하는 인쇄. 이것은 인쇄하기 전에 DOM을 조작하고 그것을 다시 변경하려고 시도하는 것보다 훨씬 나은 접근법입니다.

예를 들어, 웹 페이지가 화면에 표시 될 때 하나의 요소를 표시하고 싶을 때 인쇄 할 때 숨기고 다른 것을 표시하려고한다고 가정 해 봅시다. 화면 버전과 인쇄 버전 모두에 대해 HTML을 미리 렌더링해야합니다.

마크 업 :

<div class="screen"> 
    This is the stuff normal users will see. 
</div> 
<div class="print"> 
    This is the stuff that will be printed. 
</div> 

CSS :

.print { display: none; } 
@media print 
{ 
    .print { display: block; } 
    .screen { display: none; } 
} 
1

IE는 이미 이전 일로부터 onafterprint 있습니다.
HTML5에서 onafterprint는 IE가 아닌 브라우저의 이벤트가되었습니다.
MDCW3C Specificationonafterprint 자세한 내용은

을 참조하십시오.
관련 문제