2010-09-18 5 views
7

Ich habe eine Drucktaste mit id="print_req". Ich habe etwas Javascript-Code geschrieben, um eine Seite zu drucken, die durch Klicken auf diese Schaltfläche ausgelöst wird, und ich möchte diese Schaltfläche auch vor dem Drucken ausblenden und nach dem ganzen Druckvorgang anzeigen.Ich meine Schaltfläche nicht in meinem gedruckten Dokument zu drucken. Hier ist mein Code:Wie kann ich die Schaltfläche vor dem Drucken ausblenden und anzeigen, wenn der Druckvorgang abgeschlossen ist?

$(document).ready(function(){ 
    $("#print_req").click(function(){ 
     $("#print_req").css("display","none"); 
     window.print(); 
    }); 

    $("#print_req").css("display","block"); 
    return false; 
}); 

Dies richtig, dass die Taste verbergen, aber wenn der Druckprozess erledigen, die Taste nicht mehr anzeigen! Was ist das Problem?

+0

Rethink Ihre Antwort, da es einen besseren Weg, es zu tun ist. ein Hintergrundbild zu verwenden ist keine gute Lösung. – epascarello

Antwort

18

Sie an dieser falsch gehen. Sie sollten die Schaltfläche nicht mit JavaScript anzeigen oder ausblenden oder dafür ein Hintergrundbild verwenden. Sie sollten ein Druck-Stylesheet verwenden, mit dem Sie verschiedene Stile auf die Seite anwenden können, wenn sie gedruckt wird. In Ihrem Fall würden Sie die Anzeige in diesem Stylesheet auf keine Sichtbarkeit setzen.

So fügen Sie ein Stylesheet mit den Medientyp für den Druck

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

In diesem print.css Sie die Taste

.printButtonClass{ display : none } 

Und presto verstecken, versteckt sich die Taste, wenn Sie mit nicht drucken JavaScript.

+0

Ihr Recht, aber ich drucke ein Div, das in einer Seite ist, die Taste existiert! Ich meine, jeder Stil auf Druck-Box wird die Schaltfläche auf Ladezeit beeinflussen!zum Beispiel: Wenn ich Ihren Vorschlag mache, wird es den Knopf zu früh verstecken! –

+0

und auch ich möchte nicht so eine komplexe Aufgabe für diese einfache Sache tun.aber danke Freund –

+0

Dies wird nicht die Schaltfläche ausblenden, bis die Seite gedruckt oder in der Druckvorschau angezeigt wird. Es beeinflusst nur den Stil der Schaltfläche, der Sie eine Klasse zuweisen. Es wird die Seite sowieso nicht beeinflussen. Ihre Lösung, es auf das Bild zu setzen, fügt auch weitere Probleme mit der Barrierefreiheit hinzu und was, wenn Benutzer Bilder deaktiviert haben? Werden sie mit diesem Knopf drucken können? Ich finde die Drucktaste sowieso albern, da in meinem Browser eine eingebaut ist. – epascarello

3

Das Problem ist, dass Sie nicht wissen können, wenn der Druckvorgang abgeschlossen ist Javascript. Es gibt kein Ereignis, das ausgelöst wird, um dies zu melden.

Aus Sicherheitsgründen Javascript in einer Sandbox-Umgebung im Browser ausgeführt wird, seinen Zugriff auf alle Systemressourcen zu begrenzen.

+0

so, wie ich diesen Kumpel tun? –

+0

Sie nicht rein mit Hilfe von Javascript können. Es gibt ActiveX-Steuerelemente, die das Drucken ermöglicht die Verwaltung aber sie funktionieren nur auf IE und der Benutzer sollte expl Ich akzeptiere, sie zu installieren. –

+0

oh !! Ich habe meine eigene Antwort gefunden !!! wenn ich das Bild dieses Knopfes als Hintergrund des HTML-Etiketts lege, sendet es nicht automatisch zum Drucker! :) –

2

Es ist einfach, benutzen Sie bitte diese nur verwenden, gelten die Klasse noprint auf den Button aus.

@media print { 
    .noprint{ 
     display: none !important; 
    } 
} 
0
function printFunction() { 

var restoreoriginalpage = document.body.innerHTML; 
$('#print-button').css('visibility', 'hidden'); //hiding print button before it prints 
var printcontent = document.getElementById("content").innerHTML; 
document.body.innerHTML = printcontent; 
window.print();      
document.body.innerHTML = restoreoriginalpage; //restore original page   
} 
0

Ganz einfach tun ...

$ (document) .ready (function() {

$('#print').on('click',function(){ 
    $('#print').hide(); 
    window.print(); 
    $('#print').show(); 

    }); 
}); 
Verwandte Themen