JavaScript: Beim Drucken einer vollständigen Webseite scheint IE den Inhalt von iFrames nicht auf der Seite zu drucken

8

Die Website des Kunden enthält Produkteinträge. Die Preise für das Produkt werden dynamisch über einen iFrame am unteren Rand der Seite abgerufen. Es gibt Javascript auf der Seite, das die Größe dieses iFrames automatisch auf die richtige Höhe anpasst, je nachdem, wie groß der iFrame-Inhalt ist, sobald er geladen ist.

Der Client meldet, dass er beim Drucken der Seite nichts vom iFrame sehen kann, wo die Preise sein sollten - anscheinend druckt er nicht im IE, nur die Hauptseite selbst.

Ich bin auf einem Mac und kann daher nicht im IE testen, also habe ich eine harte Zeit damit zu experimentieren.

Kann jemand das erwartete Verhalten in dieser Situation klären? Ist es möglich, IE dazu zu bringen, sowohl die Seite als auch die eingeschlossenen iFrames standardmäßig auszugeben, und wenn ja, wie würde ich dies tun? Ich kann nur Beispiele zum Drucken eines bestimmten Frames finden ein Elternfenster.

Danke!

    
Jack 28.03.2013, 20:59
quelle

5 Antworten

1

Das erwartete Verhalten sollte dem entsprechen, was Sie in anderen Browsern feststellen. Wenn die Seite gedruckt wird, sollte der Iframe mit gedruckt werden. Es wäre schwer vorstellbar, dass alle anderen es falsch gemacht haben und IE hat es in diesem Fall richtig gemacht.

Unten ist ein bisschen Spekulation zu dem Thema könnte sein, aber ohne mehr zu wissen / Code zu sehen, ist es schwierig, die Besonderheiten zu kennen:

Dieses Problem kann auf einige CSS zurückzuführen sein, die Sie möglicherweise auf Ihrer Seite haben. Ich habe von ähnlichen iframe Druckproblemen gelesen, bei denen visibility anfangs auf hidden gesetzt wurde, was dazu führte, dass iframe nicht korrekt druckte. Um diesen speziellen Fall zu umgehen, musste der Benutzer width und height auf 0px setzen. Ohne mehr über Ihre Website zu wissen, kann ich nicht genau vorhersagen, dass dies geschieht.

Ein weiteres Problem kann durch Ihre dynamische Größenanpassung basierend auf dem Inhalt des iframe sein. Ein einfacher Test wäre, diesen Abschnitt zu kommentieren und ein generisches width und height auf dem iframe zu setzen, um zu sehen, ob das Druckproblem weiterhin auftritt. Vielleicht werden diese dynamischen Stile nicht auf das Druck-Stylesheet übertragen und werden nicht angewendet (erscheinen also überhaupt nicht).

Als einen schnellen Vorschlag, schauen Sie sich css media types an:

Drucken

  

Für ausgelagertes Material und für Dokumente, die auf dem Bildschirm angezeigt werden   Druckvorschau-Modus. Bitte konsultieren Sie den Abschnitt zu Seitenmedien für   Informationen zu Formatierungsproblemen, die für ausgelagerte Medien spezifisch sind.

Hilfreiche Links : Druckspezifikation

    
Chase 09.04.2013 13:50
quelle
0

Das war ein interessanter Punkt, also habe ich einen Test mit IE8 gemacht (auf einem Server, nicht lokal).

Ich habe in IE8 eine Webseite gedruckt, die einen iframe von etwas enthält, das ich erstellt habe. Und es druckte einige der Inhalte beim ersten Mal (der andere Inhalt zeigte sich schwarz). Das zweite Mal, als ich druckte, waren die Iframe-Inhalte alle schwarz.

In meinem Beispiel ändert sich jedoch der Inhalt im iframe ständig (Bilder und Text, die ein- und ausgeblendet werden) und der CSS-Hintergrund dahinter ist schwarz.

Dieser Test enthält den Inhalt des iFrame auf einem anderen Host-Server als den Inhalt der Hauptseite. Aber meines Wissens gibt es hier eine domänenübergreifende Richtliniendatei.

Domänenübergreifende Richtlinienprobleme waren meine erste Vermutung, aber es ist durchaus möglich, dass es ein Problem damit gibt, wie der Internet Explorer den Screenshot beim Senden an den Drucker rendert.

    
Shazboticus S Shazbot 02.04.2013 23:40
quelle
0

Wenn Sie Javascript verwenden, versuchen Sie es nicht window.print() function zusammen mit print media CSS .

    
Sanjeev Rai 09.04.2013 12:31
quelle
0

Ich kann nicht erklären, warum IE nicht funktioniert, aber vielleicht können Sie das Problem beheben, indem Sie diesen Teil des Codes in die übergeordnete Seite einfügen, um zu erzwingen, dass jeder Iframe aktualisiert wird:

%Vor%

Um den Browser zu erhalten, verwende ich diese Methode .
Und ich benutze contentDocument.location.reload(true); Methode nicht, um sicherzustellen, dass der Iframe aktualisiert wird. Siehe SO-Thema .

    
JoDev 09.04.2013 15:39
quelle
0

Versuchen Sie dieses Plugin, damit wird Ihr Problem gelöst Ссылка

    
zeshan 07.11.2013 20:03
quelle