innerHTML - Druckaufbereitung - Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • innerHTML - Druckaufbereitung - Problem

    Hallo zusammen,

    mich plagt ein Problem mit JavaScript, bzw. der innerHTML-Funktion.

    Folgende Problemstellung:
    Ich möchte aus einer üblichen Standard-HTML-Datei nur bestimmte Bereiche für den Ausdruck bestimmen.

    Also habe ich über die id's diese Bereiche festgelegt und eine JS-Funktion geschrieben, welche mir bei Klick auf diese den Bereich aus dem Hauptdokument in ein neu aufgerufenes Fenster übergibt und darstellen soll.

    Nur LEIDER wird das neu aufgerufene Fenster mal korrekt mit Inhalt dargestellt und manchmal aber nur LEER geöffnet. Ich habe bislang keine Logik/Systematik dafür gefunden. Das das ohnehin nur im IE funktioniert weiß ich ja. Da es da aber nur ab und zu funktioniert, treibt mich das noch um den Verstand!


    Sowohl das Hauptdokument, als auch die leere Seite (in die der Text übergeben werden soll) und die JS-Funktion welche bei Klick ausgeführt werden soll (aus dem Hauptdokument), habe ich anbei im Quelltext zusammengestellt.


    Wenn jemand helfen kann, 1001 Danke, ich revanchiere mich gern.

    In der Hoffnung auf den rettenden Hinweis,

    PWolf


    ***********---- schnipp schnapp -------*************

    Dies ist die Hauptdatei, aus welcher der Inhalt in die neue, leere HTML-Datei (siehe unten, druckmaske.html) übergeben werden soll. Durch Klick auf die Funktion "Druck" soll der Inhalt der ID "Druckbereich" in die unten aufgeführte Datei (druckmaske.html) übergeben werden. Die JavaScript-Funktion für "Druck" ist unten auch abgebildet.

    impressum.html :

    <html>
    <head>
    <title></title>
    <script language="JavaScript" src="main.js" type="text/javascript"></script>
    </head>
    <BODY BGCOLOR="#FFFFFF" style="font-family: verdana, helvetica, arial" topmargin="0" leftmargin="0" vlink="#0000FF" alink="#0000FF" link="#0000FF">
    <table border="0" cellpadding="0" cellspacing="0" width="600">
    <tr>
    <td valign="top" colspan="2" width="576" id="Druckbereich">
    <!-- Content Anfang -->
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td>
    Dieser Text <b>soll</b> &uuml;bergeben werden.
    </td>
    </tr>
    </table>
    <!-- Content Ende -->
    </td>
    </tr>
    </table>
    Dieser Text darf <b>nicht</b> &uuml;bergeben werden.
    <p></p>
    <a href="javascriptruck()">Seite drucken</a>
    <p></p>
    Problem: Mal klappts und mal ist die neu aufgerufene Seite einfach leer...
    </body>
    </html>

    ***********---- schnipp schnapp -------*************

    Hier die leere HTML-Datei, welche durch unten genannte JavaSript-Funtion geöffnet wird und den Inhalt aus der oben genannten Hauptdatei wiedergeben soll. (siehe id "neueUeberschrift"...)

    druckmaske.html :

    <html>
    <head>
    <title></title>
    </head>
    <script language="JavaScript" src="js/main.js" type="text/javascript"></script>
    <BODY BGCOLOR="#FFFFFF" style="font-family: verdana, helvetica, arial" topmargin="0" leftmargin="0" vlink="#0000FF" alink="#0000FF" link="#0000FF">
    <table border="0" cellpadding="2">
    <tr>
    <td id="neuerInhalt"> </td>
    </tr>
    </table>
    </body>
    </html>

    ***********---- schnipp schnapp -------*************

    Hier die JavaScript-Funktion, welche ich in eine externe Datei ausgelagert habe (main.js). Bei Klick auf einen Link zum Druck aus der Hauptdatei, wird diese ausgeführt.

    main.js :

    function Druck()
    {
    var newWin = window.open('druckmaske.html','Druckmaske', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no, resizable=no,copyhistory=no,width=635');

    var alterInhalt = document.getElementById("Druckbereich").innerHTML;
    newWin.document.getElementById("neuerInhalt").innerHTML = alterInhalt;
    newWin.print();
    newWin.setTimeout("self.close()",1000);
    }

    [Editiert von pwolf am 11-11-2001 um 21:47]

  • #2
    Hat jemand von Euch das Problem von pwolf gelöst?
    Würde dieses Script gerne für meine Seite benutzen.

    [Editiert von Sky am 04-01-2002 um 11:59]

    Kommentar


    • #3
      Hat jemand von Euch das Problem von pwolf gelöst?
      Würde dieses Script gerne für meine Seite benutzen.
      bitte zitiere keine kompletten texte, wenn du dich in deiner antwort gar nicht auf einzelne passagen beziehst.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Ja, sorry, hatte ich erst danach gemerkt.
        Zurück zum Thema.
        Ist jemandem ein anderes Script bekannt, mit
        dem ich eine Druckversion erstellen kann?

        Kommentar


        • #5
          Original geschrieben von xmedia2000
          Ja, sorry, hatte ich erst danach gemerkt.
          Zurück zum Thema.
          Bevor ihr zurück zum Thema kommt, möchte ich dich noch auf den edit/delete Link hinweisen, mit dem du deinen Post auch nachträglich noch ändern kannst.

          CAT Music Files

          Kommentar


          • #6
            zurück zum thread...
            Versuchs mal mit document.write() statt innerHTML,
            -> da Du eh die elementaren Elemente onthefly erstellst, kannst Du doch auch die komplette Seite erstellen lassen.

            Alternativ die Lösung mit CSS
            http://www.ideenreich.com/trickkiste/tricks17.shtml &
            http://www.ideenreich.com/trickkiste/tricks114.shtml

            Gruß
            Thomas
            Gruß
            Thomas

            Kommentar


            • #7
              Ne sorry mit document.write()
              funzt es auch nicht.
              Möchte gerne eine JS Funktion und keine
              CSS Möglichkeit.

              Kommentar


              • #8
                Erst einmal vielen Dank für die Bereitstellung des Beispiels.

                Bei mir gab es auch Probleme mit dem Laden des Druckbereichs in "druckmaske.html". Es erschien immer der Fehler, dass das Objekt nicht bekannt sei. Dieses Problem trat immer dann auf wenn ich auf meinem Webserver getestet habe. Bei lokalen Tests (ohne Webserver) trat das Problem nie auf. Beim Debuggen habe ich die Variablen im JavaScript ausgegeben (mit alert()) und dabei festgestellt, dass es plötzlich funktionierte!?

                Abhilfe leistet bei mir der Einbau einer kleinen Wartezeit bevor die Variable alterInhalt in "druckmaske.html" eingebunden wird. Hierzu kann man eine kleine Funktion schreiben (siehe unten).

                Hoffe es hilft! Würde mich jedenfalls freuen.

                Bye bye
                Tobias

                // Code
                function Druck() {

                var newWin = window.open('druckmaske.html','Druckmaske','toolbar=no,location=no,directories=no,status=no,menubar= no,scrollbars=yes,resizable=no,copyhistory=no,width=680');
                var alterInhalt = document.getElementById("Druckbereich").innerHTML;

                // 1 Sekunde warten!!!
                wait(1);
                newWin.document.getElementById("neuerInhalt").innerHTML = alterInhalt;
                }

                function wait(prmSec)
                {
                prmSec *= 1000;
                var eDate = null;
                var eMsec = 0;
                var sDate = new Date();
                var sMsec = sDate.getTime();

                do {
                eDate = new Date();
                eMsec = eDate.getTime();

                } while ((eMsec-sMsec)<prmSec);
                }

                Kommentar


                • #9
                  Original geschrieben von xmedia2000
                  Möchte gerne eine JS Funktion und keine CSS Möglichkeit.
                  aus welchem grund?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X