Drucken iframe im IE
Habe ich eine Schaltfläche, lädt den Bericht für den Druck in einen "unsichtbaren" iframe innerhalb eines div und Drucke, iframe; der Benutzer drückt eine Taste, um den Bericht zu drucken (die auf einer anderen Seite), ohne Wechsel der Seiten oder visuelle Störungen abgesehen von den drucken-dialog. Es funktioniert in Chrome und Firefox, aber nicht IE. Im IE die übergeordnete Seite vollständig ausgedruckt, und ein kleines Durcheinander iframe eingefügt wird, an der Unterseite der Seite (wo ich das laden des iframe).
Hier ist das leere div-Element ohne Inhalt, es ist da, also ich habe eine ID tagged Ort, um Stil und stick-Inhalt mit Javascript:
<div id="printerDiv"></div>
Hier ist die javascript-Funktion onClick der my-Taste mit dieser Funktion ausgelöst und fügt meine print-Seite in ein iframe innerhalb printerDiv, nach dem laden dieser Seite, die es druckt:
function printPage(url) {
var div = document.getElementById("printerDiv");
div.innerHTML = '<iframe src="'+url+'" onload=this.contentWindow.print();>
</iframe>';
}
Hier ist die CSS ausblenden des div. Ich bin mit absoluter Positionierung zu verschieben aus dem sichtbaren Bildschirm-Bereich. Ich verwendet, um zu verwenden display:none, aber Firefox war nicht in der Lage zu drucken iframes gestylt so:
#printerDiv{
position:absolute;
left:-9999px;
}
Beim drucken in IE druckt er die ganze Seite, und dann unten, wo #printerDiv
ist, bekomme ich dieses kleine iframe:
Damit der Inhalt geladen wird, aber es ist nicht gedruckt, nur der iframe, und es ist nicht versteckt, der iframe richtig. Alle anderen Inhalte, die ich einfügen in #printerDiv
versteckt ist richtig, nur der iframe zeigt wie.
Ich habe versucht, alle Lösungen in diese Frage in meine Javascript Funktion: mit self.prin
t, mit document.parentWindow.print
ändern der styles auf die printerDiv auf 0px Höhe/Breite funktioniert auch nicht.
Ich bin willkommen, um Lösungen, die nicht mit iframes (IE scheint massive Probleme mit Ihnen), aber ich brauche diese Möglichkeit zum laden von Inhalten, die nicht auf dem Bildschirm sichtbar und drucken Sie direkt über eine Taste.
- haben Sie versucht, mit @media-Regeln von css?
- Ich bin, und ich verwendet, um zu verwenden
display:none
in meinem Bildschirm und CSS -display:block
in meinem Druck-CSS, es hat nicht funktioniert in Firefox. Ich weiß nicht, ob es funktionierte im IE entweder. - Sie könnten versuchen, die Auswahl der Rahmen aus der
window.frames
array anstattthis
, dass vielleicht aufwindow
im ie - habe gerade, Chrome und FF drucken Sie den Bericht nur Rahmen, wie Sie sollte, DH jetzt druckt das übergeordnete Fenster und nur das übergeordnete Fenster, es gar nicht zeigen, der iframe mit dem Bericht.
- welche IE-version sind Sie auf die Prüfung vor?
- IE 8, muss die Arbeit im IE7 auch leider.
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie versuchen, so etwas wie dieses:
etwas wie jQuery .load() um den Bericht in der
#printerDiv
und differenziert es mit CSSauf Ihre CSS-Sie haben
und die Schaltfläche "drucken" javascript
@media print
cssbody.specialClass * {...
In meinem Fall, war die Lösung nicht ausblenden des iFrames wollte ich drucken. Wenn ich es ausblenden per display:none; visibility:hidden usw. ) der übergeordneten Seite würde immer drucken.
Statt tatsächlich versteckt den Rahmen, aber ich machte es 10x10 und ohne Rand. Nun das funktioniert (mit der delay-trick).
Beispiel-code:
HTML:
Schaltfläche drucken:
<a href="javascript:framePrint('FRAMENAME');">Print</a>
Ändern FRAMENAME auf den Namen der frame, den Sie drucken möchten.
focus()
undprint()
den Rahmen im IE. Wieder, es funktioniert in Chrome und Firefox aber nicht im IE...Ich hatte das gleiche Problem vor kurzem mit IE10, fügte ein timeout und bekam das Ergebnis, das ich wollte, das iFrame ausgedruckt, anstatt die übergeordnete Seite:
Ich hatte das gleiche problem mit IE11. Es schien wie IE ignorierte die .focus() aufrufen, und anstatt den Druck der übergeordneten Seite als auch für die iframe. Meine Lösung war, zu Spritzen, ein style-tag, verbarg alles außer der iframe rechts vor dem drucken, dann entfernen Sie den Stil nach dem Aufruf von print. Mein code ist hier http://ironlasso.com/print-only-lightbox-or-modal-window-content/