2012-04-05 4 views
1

그래서 예를 들어 많은 텍스트와 표가있는 페이지가 있습니다.자바 스크립트 인쇄 대화 후의 콜백 함수?

사용자가 '이 표를 인쇄하십시오.'자바 스크립트 링크를 사용하여 표를 인쇄 할 수있게하려면 일반 브라우저 인쇄 방법으로 나머지 페이지를 인쇄 할 수 있기를 바랍니다. 없음 : print.css에서

<link type="text/css" rel="stylesheet" href="style/print.css" media="print"> 

내가 클래스 디스플레이 '.noPrint'세트를 가지고 : 나는 print.css 스타일 시트는 다음과 같이 포함이 함께

그래서 시작합니다.

해결 방법은 'tempNoPrint'클래스를 사용하여 div에있는 테이블이 아닌 내용을 래핑하고 '이 표 인쇄'를 클릭하면 javascript에 모든 div에 'noPrint'를 추가하는 것입니다. 'tempNoPrint'와 함께 프린터 버전에 숨 깁니다.

괜찮습니다. 제대로 작동 할 것이라고 확신합니다.

그러나 모든 'tempNoPrint'div에서 'noPrint'클래스를 제거하려면 어떻게해야합니까? 이후 테이블 인쇄 만 완료된 ? 인쇄 대화 상자에서 자바 스크립트 콜백이 전송 되었습니까? 타이머를 사용할 수는 있지만 매우 불안정한 것 같습니다.

+1

데이터를 프린터로 보낸 후 noPrint 클래스를 제거해 보셨습니까? 여기에 콜백이 필요 없다고 생각합니다. – Chibuzo

+0

http://archive.plugins.jquery.com/project/printElement – Stefan

+0

Chibuzo 감사합니다, 얼마나 바보 야! 나는 그것을 시험해 보았다! 나는 완전한 대답을 추가했다. – bbeckford

답변

2

문제가 너무 복잡해 보입니다. 모두가 도움을

var printCustom = function() { 

    $('.noPrintCustom').addClass('noPrint'); 
    window.print(); 
    $('.noPrintCustom').removeClass('noPrint'); 
} 

감사 : 나는이 'noPrintCustom'클래스와 버튼 div를 함께 인쇄하지 않은 페이지의 모든 컨텐츠를 감싸

는, 나는이 함수를 호출!

4

이것은 원자력 접근 방식의 비트 일지 모르지만 이전에 이런 종류의 작업을 수행 할 때 숨겨진 iframe에 인쇄하고 인쇄하려는 비트를 출력하는 것이 었습니다.

//build new document 
var code = "<!doctype html><html><head>"; 

//add in CSS needed by the table 
code += "<link rel='stylesheet' type='text/css' href='table.css' /></head><body>"; 

//get and add in table code 
var code += "<table>"+document.getElementById('some_table').innerHTML+"</table>"; 

//finish up new doc code 
code += "</body></html>"; 

//write new doc to hidden iframe (name: hiddenFrame) 
var doc = hiddenFrame.document.open("text/html","replace"); 
doc.write(code); 
doc.close(); 

//print 
hiddenFrame.print(); 
+0

Mitya에게 감사드립니다. 그러나 페이지의 머리말과 꼬리말을 그대로 유지하고이를 지원하기 위해 'head'태그에 많은 것을 삽입하고자했기 때문에이 기능이 제대로 작동하도록하는 것이 까다로웠습니다. – bbeckford

+0

미래의 절망에 대한 좋은 작은 스 니펫 :) – T4NK3R

관련 문제