Dagmar: Javascript+CSS: IE&Opera o.k.-NS&Firefox nicht o.k.

Mein eigentliches Thema (musste ich kürzen) :
Javascript + CSS: IE 6.0 & Opera 8.5 o.k. - Netscape 7.1&Firefox1.07 klappt nicht

Hallo zusammen,

bin soeben echt am verzweifeln (eigentlich schon seit gestern) :

Habe auf einer kleinen Seite ausprobiert mit css für ein Drucklayout zu arbeiten.

Auf der Seite werden einfach laufend Termine notiert und es soll möglich sein, sich nur einen bestimmten Monat auszudrucken. Für jeden Monat gibt es eine eigene Tabelle und in der Überschrift der Tabelle gibt es eine Druckmöglichkeit.

Im IE 6.0 und Opera 8.5 klappt alles so wie es soll.

Im Netscape 7.1 und im Firefox 1.07 klappt das nur dann, wenn ich in meiner Javascript-Routine nach dem window.print noch ein alert einbaue. ?

Das erscheint mir absolut nicht logisch und daher vermute ich dass ich irgendwo einen Fehler habe, den ich absolut nicht sehen kann.

Version ohne alert: http://www.sadrinna.de/fdp-eitorf/index2.htm
Version mit alert: http://www.sadrinna.de/fdp-eitorf/index3.htm

Hier noch die "normale" css : http://www.sadrinna.de/fdp-eitorf/fdp_eintorf_css.txt

Meine styles für Drucken/Bildschirm: (in externen Dateien)

fdp-print.css :
/* CSS Document */
.noprint {
display: none;
}

fdp-screen.css :
/* CSS Document */
.noscreen {
display: none;
}

Mehr steht in diesen Dateien (noch) nicht drin.

Mag sein, dass dies ein absoluter Anfängerfehler ist - Jedoch würde ich mich über Hilfe RIESIG freuen.
Bei meiner Suche in allen möglichen Foren habe ich nichts gefunden.

Beim Themenbereich musste ich mich entscheiden zwischen Javascript und css - mein Gefühl sagt mir, dass ich hier richtig bin.

Ich sag schon mal Danke und verbleibe hoffnungsfroh vor meinem Compi :-)

  1. Hi Dagmar!

    Mag sein, dass dies ein absoluter Anfängerfehler ist - Jedoch würde ich mich über Hilfe RIESIG freuen.

    Wenns das ist, was ich glaube, dann ist das KEIN Anfängerfehler...

    Beim Themenbereich musste ich mich entscheiden zwischen Javascript und css - mein Gefühl sagt mir, dass ich hier richtig bin.

    Dein Gefühl liegt mE auch richtig:

    window.alert("Jetzt soll gedruckt werden ");
    window.print();
    window.alert("Vor dem Einblenden");

    Die Mozilla Engine bleibt wohl nicht bei window.print() stehen, bis der Ausdruck übermittelt wurde, sondern das Skript läuft weiter...
    Wenn du also den zweiten alert weglässt, dann werden die Blöcke (noch bevor der Ausdruck angefertigt wurde) wieder eingeblendet.

    Versuche doch mal folgendes:
    1. definiere:

    function restore()
    {
    for (var i = 0; i < monate.length; ++i) {
         if (document.getElementById(monate[i])) document.getElementById(monate[i]).style.display = 'inline';
    }

    und an der stelle wo bisher steht:
    window.alert("Vor dem Einblenden");
    schreibst du:
    window.setTimeout("restore()",500);
    Das verzögert die Wiedereinblendung um 500ms; vielleicht hilft das.

    Grüsse,
    Richard

    1. Hallo Richard,

      habe irgendwie Probleme, dass die Antwort erscheint.

      Also: Danke für Deine rasche Antwort.

      Mit Deinem Tipp diese Routine aufzurufen, klappt es auch nicht. Habe den Wert von 500 auch auf 1000 gesetzt.

      Scheint, als müsste ich damit leben dass dem einfach so ist und ein "sinnvolles" alert einzubauen.

      Mir hat jemand gesagt, dass ich direkt auf die Klassen zugreifen soll und diese ändern. Das habe ich noch nicht ausprobiert, würde aber bedeuten, dass ich für jeden Monat eine Klasse einbauen müsste (noprintaugust2007, noprintseptember2007 etc.)

      Mal sehen, was ich mache - oder hast Du noch einen Tipp?

      Vielen Dank - Grüße
      Dagmar