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:
Drucken iframe im IE

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.print, 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 anstatt this, dass vielleicht auf window 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.

InformationsquelleAutor Ben Brocka | 2011-10-07
Schreibe einen Kommentar