Versteckten IFrame drucken - IE spinnt

  • JavaScript

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von BjöNi.

    Versteckten IFrame drucken - IE spinnt

    Hallo,
    ich wollte eine externe Seite drucken, ohne dass die aktuelle dazu vom Benutzer verlassen wird bzw. dass sich ein Popup öffnet, druckt und wieder schließt.
    Also hab ich mal nen bisschen rumgestöbert und hab schließlich einen IFrame mit der auszudruckenden Webseite eingebunden, width und height auf 0 gestellt sowie style auf "visibility=hidden;" (trotz 0px² wäre sonst ein Rahmen sichtbar). Dann lasse ich über einen Link

    JavaScript-Quellcode

    1. top.frames.drucken.print();
    aufrufen. Das funktioniert auch wunderbar, so lange man mal vom IE absieht. Dieser druckt nach wie vor die ganze Seite. Also hab ich weitergesucht und schließlich gefunden, dass das eines der vielen "Features" (;)) des IE ist und ich den IFrame vorher fokusieren muss.

    JavaScript-Quellcode

    1. top.frames.drucken.focus();
    Ergebnis: Funktioniert immer noch nicht. Nach einigem rumprobieren hab ich nun festgestellt, dass das an dem "visibility:hidden;" liegt, scheinbar ist ein unsichtbarer IFrame nicht fokusierbar. Nun habe ich mir folgende Funktion geschrieben, die zwar funktioniert, aber trotzdem unschön ist, v.a. weil der IFrame kurz sichtbar ist.

    JavaScript-Quellcode

    1. function druck() {
    2. document.getElementById('drucken').style.visibility = 'visible';
    3. top.frames.drucken.focus();
    4. top.frames.drucken.print();
    5. document.getElementById('drucken').style.visibility = 'hidden';
    6. }
    Wie kann ich das noch verbessern bzw. gibt es sonst irgendwelche Vorschläge?
    Gruß, BjöNi
    Da es nur um den Rahmen geht, wäre des Rätsels Lösung doch den Rahmen einfach zu entfernen nicht wahr??

    HTML-Quellcode

    1. <iframe src="druck.html" name="bla" id="bla" width="0" height="0" frameborder="0" scrolling="no"></iframe>


    Problem behoben. Kein iFrame sichtbar, muss nicht mit Visibility gearbeitet werden. Einfach Focusieren und Drucken.
    @Dodo: Bisher hatte ich folgenden Code, das mit Frameborder hatte ich vergessen zu erwähnen:

    HTML-Quellcode

    1. <iframe src="<?php echo printlinkx(); ?>" width="0" height="0" id="drucken" name="drucken" frameborder="0"></iframe>
    Leider haben da manche Browser (z.B. Chrome) ein Quadrat mit der Kantenlänge der Schriftgröße in der Zeile angezeigt. Mit Scrolling="no" (wodran ich nicht gedacht habe) gehts jetzt:

    HTML-Quellcode

    1. <iframe src="<?php echo printlinkx(); ?>" width="0" height="0" id="drucken" name="drucken" frameborder="0" scrolling="no"></iframe>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BjöNi“ ()