Also arbeite ich gerade an einer Web-Anwendung, die eine Liste Clients mit einer Liste von Transaktionen darunter zeigt. Benutzer müssen die Möglichkeit haben, das Transaktionslog eines einzelnen Kunden oder alle Transaktionen zu drucken.Warum wird diese Website in Chrome für Windows leer gedruckt? Es ist makellos auf meinem Mac. (@media print)
Ich verwende Tabellen, um die Daten anzuzeigen. Im @media Druck CSS, habe ich folgendes:
table{
display:none;
}
table.show-data-block{
display:table;
}
Zunächst werden alle Tabellen haben die Klasse .show-Daten-Block. Allerdings binden ich Drucktasten (neben dem Client-Namen befindet) mit dem folgenden:
$('.print-log').click(function(e){
$('.show-data-block').removeClass('show-data-block');
//I know, lots of nesting
var clientTable=$(this).parent().parent().parent().parent();
if(!$('.'+$(clientTable).data('owns')).length<=0){
$(clientTable).addClass("show-data-block");
}
$('.'+$(clientTable).data('owns')).addClass("show-data-block");
window.print();
//just to be safe
setTimeout(function(){
$('table').addClass('show-data-block');
},500);
});
On Chrome für Windows, das ist das Ergebnis: Frustrating Printing Error \
Doch aus irgendeinem Grund, wenn jemand klickt den Knopf ein zweites Mal, es wird korrekt angezeigt. Auf meinem Mac (Chrome) wird es beim ersten Mal korrekt angezeigt.
Unsere Verträge mit Kunden geben uns den Luxus, nur für Chrome zu entwickeln, also muss dies nur in Chrome funktionieren.
Kann jemand das beheben? Ich habe versucht, es so lange herauszufinden, und Benutzer/Kunden erkennen nicht, dass die Optimierung für das Drucken im Web eines der frustrierendsten Dinge ist, die Sie einem Webentwickler jemals geben können. :(
Die Tatsache, dass das zweite Mal, Sie wollen die Ergebnisse ausdrucken, es funktioniert ... Bedeutet das Skript funktioniert.Das Problem, das Sie hier haben (Ich denke) ist einfach, dass Ihre Das Skript ist noch nicht fertig, wenn du es druckst Ich selbst bin nicht der Experte, also kann ich mir in diesem Moment keine Lösung aus meinem Daumen heraussaugen :) – Goowik
Leider habe ich versucht, setTimeout für window.print () aber es funktioniert immer noch nicht:/ – baaak
Sind die Zeilen in diesem Bildschirm Sie haben etwas in der Liste oder nur einen Seitenhintergrund gerendert? Haben Sie versucht, den Debugger von Chrome zu debuggen (Inspector> hamburger> Konsole anzeigen> Registerkarte Rendern> Medien emulieren: Drucken)? Verwenden Sie benutzerdefinierte Schriftarten zum Drucken? Setzen Sie die Größe/Farbe des Textes zurück? – aardrian