Was ist der beste Weg, um den Inhalt eines DIV zu drucken?
javascript
jquery
html
printing
Usertest
quelle
quelle
Antworten:
Leichte Änderungen gegenüber früheren Versionen - getestet auf CHROME
quelle
mywindow.document.write(data);
Füge dies hinzu:mywindow.document.write('<script type="text/javascript">$(window).load(function() { window.print(); window.close(); });</script>');
Und entferne:mywindow.print();
undmywindow.close();
Ich denke, es gibt eine bessere Lösung. Lassen Sie Ihre Div zum Drucken das gesamte Dokument abdecken, aber nur, wenn es gedruckt wird:
quelle
Obwohl dies von @gabe gesagt wurde , können Sie mein
printElement
Plugin verwenden , wenn Sie jQuery verwenden .Es gibt eine Probe hier und weitere Informationen über das Plugin hier .
Die Verwendung ist ziemlich einfach. Nehmen Sie einfach ein Element mit einem jQuery-Selektor und drucken Sie es aus:
Ich hoffe, es hilft!
quelle
Verwenden Sie mit Jquery einfach diese Funktion:
Ihr Druckknopf sieht folgendermaßen aus:
Bearbeiten: Wenn Sie Formulardaten haben, die Sie behalten müssen, kopiert der Klon diese nicht. Sie müssen also nur alle Formulardaten abrufen und sie nach der Wiederherstellung wie folgt ersetzen:
quelle
el
ist schrecklich, besonders seit Sie jQ verwenden. Viel besser, einfach zu bestehenselector
und die#
el
. Ich denke, der Druckbefehl wird gesendet, wenn der Körper wiederhergestellt wird.Von hier http://forums.asp.net/t/1261525.aspx
quelle
Ich habe die
Bill Paetzke
Antwort verwendet, um ein Div zu drucken, das Bilder enthält, aber es funktionierte nicht mit Google ChromeIch musste nur diese Zeile hinzufügen
myWindow.onload=function(){
, damit es funktioniert und hier ist der vollständige CodeAuch wenn jemand nur ein Div mit ID drucken muss, muss er keine Abfrage laden
Hier ist reiner Javascript-Code, um dies zu tun
Ich hoffe das kann jemandem helfen
quelle
Dadurch wird der
div
gewünschte Bereich gedruckt und der Inhalt auf den ursprünglichen Zustand zurückgesetzt.printdivname
ist dasdiv
zu druckende.quelle
Erstellen Sie ein separates Druck-Stylesheet, in dem alle anderen Elemente außer dem zu druckenden Inhalt ausgeblendet sind. Kennzeichnen Sie es mit,
'media="print"
wenn Sie es laden:<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Auf diese Weise können Sie ein völlig anderes Stylesheet für Ausdrucke laden.
Wenn Sie erzwingen möchten, dass der Druckdialog des Browsers für die Seite angezeigt wird, können Sie dies beim Laden mit JQuery folgendermaßen tun:
$(function() { window.print(); });
oder ausgelöst durch ein anderes Ereignis, das Sie möchten, z. B. wenn ein Benutzer auf eine Schaltfläche klickt.
quelle
Ich denke, die bisher vorgeschlagenen Lösungen haben die folgenden Nachteile:
Ich habe die obigen Lösungen verbessert. Hier ist etwas, das ich getestet habe und das mit den folgenden Vorteilen wirklich gut funktioniert.
Wichtige Punkte zu beachten:
quelle
Ich habe ein Plugin erstellt, um dieses Szenario anzugehen. Ich war mit den Plugins da draußen unzufrieden und machte mich daran, etwas umfangreicher / konfigurierbarer zu machen.
https://github.com/jasonday/printThis
quelle
Die akzeptierte Lösung funktionierte nicht. Chrome druckte eine leere Seite, weil das Bild nicht rechtzeitig geladen wurde. Dieser Ansatz funktioniert:
Bearbeiten: Es scheint, dass die akzeptierte Lösung nach meinem Beitrag geändert wurde. Warum das Downvote? Diese Lösung funktioniert auch.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe dieses Problem mit jQuery gelöst.
CSS
quelle
Obwohl @BC Antwort am besten war, um eine einzelne Seite zu drucken.
Es kann jedoch hilfreich sein, mehrere Seiten im A4-Format gleichzeitig mit Strg + P zu drucken.
quelle
quelle
Hier ist mein jquery print Plugin
quelle
Wenn Sie alle Stile aus dem Originaldokument haben möchten (einschließlich Inline-Stile), können Sie diesen Ansatz verwenden.
Implementierung:
quelle
Hinweis: Dies funktioniert nur mit jQuery-fähigen Sites
Mit diesem coolen Trick ist es sehr einfach. Es hat bei mir im Google Chrome- Browser funktioniert . In Firefox können Sie ohne Plugin nicht als PDF drucken.
Die Logik ist einfach. Wir erstellen ein neues Skript-Tag und hängen es vor dem schließenden Body-Tag an. Wir haben eine jQuery-Druckerweiterung in den HTML-Code eingefügt. Ändern Sie myDivWithStyles mit Ihrer eigenen Div-Tag-ID. Jetzt muss ein druckbares virtuelles Fenster vorbereitet werden.
Probieren Sie es auf jeder Website aus. Nur eine Einschränkung ist manchmal schwierig geschrieben. CSS kann dazu führen, dass Stile fehlen. Aber wir bekommen den Inhalt meistens.
quelle
Versuchen Sie in Opera:
quelle
Hier ist eine IFrame-Lösung, die für IE und Chrome funktioniert:
quelle
Es wurde etwas Generisches erstellt, das für jedes HTML-Element verwendet werden kann
Hoffe das hilft.
quelle
Ich habe die @ BillPaetski-Antwort geändert, um querySelector zu verwenden, optionales CSS hinzuzufügen, das erzwungene H1-Tag zu entfernen und den Titel optional anzugeben oder aus dem Fenster zu ziehen. Es wird auch nicht mehr automatisch gedruckt und macht Interna verfügbar, sodass sie in der Wrapper-Funktion oder nach Belieben ausgeschaltet werden können.
Die einzigen zwei privaten Variablen sind tmpWindow und tmpDoc, obwohl ich glaube, dass Titel-, CSS- und Elem-Zugriff variieren können. Es sollte angenommen werden, dass alle Funktionsargumente privat sind.
Code: Verwendungszweck:quelle
<input>
Elemente nicht kopiert . Wie kann ich dies verwenden, einschließlich dessen, was der Benutzer eingegeben hat?<input>
,<select>
,<textarea>
compontents ihre Laufzeitwert sein. Es gibt Alternativen, aber es ist kein Problem mit diesem Skript, sondern ein Problem mit der Funktionsweise von Browsern und deminnerHTML
.attr('value',)
. Ich habe es sogar für Textbereiche (durch Anhängen) und Kontrollkästchen (.attr('checked',)
) gemacht. Es tut mir leid, wenn ich nicht genug darüber nachgedacht habe, was ich gefragt habe.Der folgende Code kopiert alle relevanten Knoten, auf die der Abfrageselektor abzielt, und kopiert ihre Stile, wie auf dem Bildschirm angezeigt, da viele übergeordnete Elemente, die für das Targeting der CSS-Selektoren verwendet werden, fehlen. Dies führt zu einer gewissen Verzögerung, wenn viele untergeordnete Knoten mit vielen Stilen vorhanden sind.
Idealerweise haben Sie ein Druck-Stylesheet bereit. Dies ist jedoch für Anwendungsfälle gedacht, in denen kein Druck-Stylesheet eingefügt werden muss und Sie wie auf dem Bildschirm angezeigt drucken möchten.
Wenn Sie die folgenden Elemente in die Browserkonsole auf dieser Seite kopieren, werden alle Codefragmente auf dieser Seite gedruckt.
quelle
Dies ist wirklich ein alter Beitrag, aber hier ist ein Update, das ich mit der richtigen Antwort gemacht habe. Meine Lösung verwendet auch jQuery.
Dies dient dazu, die richtige Druckansicht zu verwenden, alle Stylesheets für die richtige Formatierung einzuschließen und auch in den meisten Browsern unterstützt zu werden.
Später brauchen Sie einfach so etwas:
Versuch es.
quelle
Gleich wie die beste Antwort, nur für den Fall, dass Sie das Bild wie ich drucken müssen:
Wenn Sie ein Bild drucken möchten:
quelle
load
Ereignis im Popup. Ohne sie drucken Sie eine leere Seite, da das Bild nicht geladen wird. =>$(popup).load(function(){ popup.focus(); popup.print(); });
Der beste Weg, dies zu tun, wäre, den Inhalt des div an den Server zu senden und ein neues Fenster zu öffnen, in dem der Server diesen Inhalt in das neue Fenster einfügen könnte.
Wenn dies keine Option ist, können Sie versuchen, eine clientseitige Sprache wie Javascript zu verwenden, um alles auf der Seite außer diesem div auszublenden und dann die Seite zu drucken ...
quelle