Frunk: Druck-CSS unfallfrei einbinden

Moin,

für die Druckausgabe möchte ich eigene CSS-Regeln in meine Seiten einbinden, kollidiere dabei aber ständig mit verschiedenen Unpässlichkeiten:

  1. Direkte Einbindung in den HTML-Code (mit @media) kommt nicht in Frage. Ich möchte die Daten an einer zentralen Stelle haben, sowohl wegen der Verwaltung als auch wegen der Ladezeit.

  2. <link> mit media="print" ist mir sehr unsympathisch. Ich wollte Uraltbrowsern das böse CSS ersparen und binde deshalb lieber mit @import ein. Das betrifft allerdings in erster Linie Netscape 4, der nur noch in homöopathischen Dosen vorbeikommt.

  3. @import css-url print; wäre mein Favorit. Dummerweise kann der IE damit nicht umgehen, auch nicht die aktuelle Version 7. Wenn er diese Vorgabe ignorieren würde, wäre es ja noch erträglich, aber nein, er müllt meine Protokolle mit Anforderungen nach "css-url%20print" zu. Herzlichen Dank, Microsoft :(

  4. @media { @import } funktioniert in keinem Browser, anscheinend lassen sich die @-Teile nicht verschachteln. Einen entsprechenden Passus konnte ich zwar nicht finden, ist aber letztlich auch unerheblich, wenn's in der Praxis nicht geht, hilft alle Theorie nichts.

  5. @import zusammen mit einer CSS-Datei, in der eine großen @media-Klammer steckt, ist mir auch unsympathisch, da dann Daten runtergeladen werden müssen, die meistens überhaupt nicht benutzt werden, denn so häufig wird nun auch nicht gedruckt.

Gibt es andere Varianten? Habe ich bei 4) eventuell etwas falsch gemacht bzw. hat es jemand am Laufen? Oder muss ich mich mit dem kleinsten Übel, 2) oder 5), zufrieden geben?

Grüße, Frunk

  1. Moin!

    1. <link> mit media="print" ist mir sehr unsympathisch.

    Das ist aber die beste Methode. Ebenso wie für Screen-CSS.

    Ich wollte Uraltbrowsern das böse CSS ersparen und binde deshalb lieber mit @import ein.

    Wo soll da der Unterschied sein? CSS-unfähige Browser ignorieren auch den <link>, und Netscape 4 kommt nicht mehr vor.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
      1. <link> mit media="print" ist mir sehr unsympathisch.

      Das ist aber die beste Methode.

      Aber eine Begründung hast du dafür nicht? Ist das so wie Vögel fliegen und die Erde eine Scheibe ist? Wo soll der (in der Theorie) funktionale Vorteil gegenüber @import liegen?

      Ich wollte Uraltbrowsern das böse CSS ersparen und binde deshalb lieber mit @import ein.

      Wo soll da der Unterschied sein?

      Der Unterschied ist, dass Netscape 4 @import im Gegensatz zu <link> nicht kennt und man so eine wunderschöne CSS-Browserweiche bekommt, nämlich eine, die ohne irgendwelche grausamen Verrenkungen auf Basis der Browserkennung arbeitet.
      Wenn es eine einfache Methode gibt, Nutzer zu erreichen, benutze ich sie auch gerne. Mir ist jeder Besucher gleich lieb und wegen eines Dutzends gesparter Bytes (<link> gegenüber @import) setze ich niemanden vor die Tür.

      Netscape 4 kommt nicht mehr vor.

      Dann habe ich die Netscape-4-Einträge wohl geträumt. Wenn du dich dahingehend bequemen könntest, statt universeller Wahrheiten begründete Aussagen zu geben, wäre deine Einlassung hilfreich :->

      1. Hi,

        Netscape 4 kommt nicht mehr vor.

        Dann habe ich die Netscape-4-Einträge wohl geträumt. Wenn du dich dahingehend bequemen könntest, statt universeller Wahrheiten begründete Aussagen zu geben, wäre deine Einlassung hilfreich :->

        Na komm, betrachte es doch mal realistisch - wer heute mit einem Netscape 4 auf deine Seiten kommt, muss entweder ein verrueckter Forscher sein, oder seit mindestens fuenf Jahren nicht mehr online gewesen sein ...

        Du kannst es nicht "allen" recht machen (mit vertretbarem Aufwand und ohne Nebenwirkungen). Also warum zerbrichst du dir den Kopf ueber solche Fossile unter den Browsern?

        MfG ChrisB

        1. Na komm, betrachte es doch mal realistisch - wer heute mit einem Netscape 4 auf deine Seiten kommt, muss entweder ein verrueckter Forscher sein,

          Mit der Aussage liegst du gar nicht mal so falsch: Die betreffenden Zugriffe stammen der Domain nach zu urteilen zum überwiegenden Teil aus Bibliotheken einer größeren Universität.

          Du kannst es nicht "allen" recht machen (mit vertretbarem Aufwand und ohne Nebenwirkungen). Also warum zerbrichst du dir den Kopf ueber solche Fossile unter den Browsern?

          Dass ich mir den Kopf zerbreche, wäre übertrieben; ich versuche zu ergründen, ob bzw. welcher Aufwand vertretbar ist.
          Gerade deswegen "hing" ich ja so an @import, es ist einfach ein sauberer Netscape-4-Ausschluss, und die dafür nötigen drei Sekunden Tipparbeit sind für die wöchentlich wiederkehrenden Netscape-4-Besuche, auch wenn's kaum eine Handvoll sind und selbst in (ganzen) Promillezahlen nicht erfassbar, immer vertretbar - wäre da nicht das beschriebene Problem mit dem IE 7.

          Grüße, Frunk

          1. Hallo

            Gerade deswegen "hing" ich ja so an @import, es ist einfach ein sauberer Netscape-4-Ausschluss, ...

            Auch alle Aufrufe mit <link>, die mit Mediaangaben, die nicht "all" entsprechen, erfolgen, schließen NS4 aus.

            <link rel="stylesheet" href="/css/bla.css" type="text/css"><!-- NS4: ja -->  
            <link rel="stylesheet" href="/css/bla.css" type="text/css" media="all"><!-- NS4: ja -->  
            <link rel="stylesheet" href="/css/bla.css" type="text/css" media="print"><!-- NS4: nein -->  
            <link rel="stylesheet" href="/css/bla.css" type="text/css" media="aural"><!-- NS4: nein -->
            

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)
            Veranstaltungsdatenbank Vdb 0.2
            1. Hallo

              Das kommt davon, wenn man sich auf siene Erinnerung verlässt. media="all" schließt den NS4 natürlich vom CSS aus. Die einzige Mediaangabe, die der NS4 versteht, ist "screen".

              <link rel="stylesheet" href="/css/bla.css" type="text/css"><!-- NS4: ja -->

              <link rel="stylesheet" href="/css/bla.css" type="text/css" media="screen"><!-- NS4: ja -->
              <link rel="stylesheet" href="/css/bla.css" type="text/css" media="all"><!-- NS4: nein -->
              <link rel="stylesheet" href="/css/bla.css" type="text/css" media="print"><!-- NS4: nein -->
              <link rel="stylesheet" href="/css/bla.css" type="text/css" media="aural"><!-- NS4: nein -->

                
              Tschö, Auge  
              
              -- 
              Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.  
              (Victor Hugo)  
                
              [Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)
              
      2. Hi,

        1. <link> mit media="print" ist mir sehr unsympathisch.

        Das ist aber die beste Methode.

        Aber eine Begründung hast du dafür nicht?

        ich hätte da eine: dieses Element ist exakt dafür da, externe Resourcen einzubinden. Das style-Element hingegen dazu, CSS direkt in die Seite zu setzen. Dass mir @import auch im CSS eine entsprechende Möglichkeit dazu gegeben wurde, ändert nichts daran.

        Ich wollte Uraltbrowsern das böse CSS ersparen und binde deshalb lieber mit @import ein.

        Das mach(t)e ich ja auch so. Allerdings: was sollte an einem CSS für einen ordentlichen Ausdruck "böse" sein? Gerade _wenn_ Du ein Herz für die manchmal noch im Promille-Bereich anzutreffenden Uralt-Browser hast, solltest Du ihnen zumindest einen ansehnlichen Ausdruck spendieren. Oder Du stellst Dich auf den Standpunkt: Ansehen der Seite ohne CSS ist zwar nicht schön, macht die Seite aber wenigstens nutzbar - ein sinnvoller Ausdruck wäre aber zuviel verlangt... Nur kannst Du in diesem Fall das print-CSS auch normal einbinden.

        Netscape 4 kommt nicht mehr vor.

        Dann habe ich die Netscape-4-Einträge wohl geträumt.

        Vermutlich hat Dein Statistikprogramm Dir diese vorgegaukelt. Gerade Netscape4 läßt sich nur schwer von einigen älteren Robots unterscheiden - man muss schon ein besonderes Faible für die korrekte Erkennung dieses Browsers haben (wie ich z.B., der ihn sehr lange, bis immer mehr Seiten damit nicht mehr nutzbar waren, verwendet hatte), um sich die Arbeit zu machen und diese Unterscheidung ins Auswertungsprogramm mit aufzunehmen.
        So sind z.B. "Mozilla/4.0" ebenso wie "Mozilla/4.0 (compatible;)" oder gar "Mozilla/4.7 (compatible; OffByOne; Windows 2000) Webster Pro V3.4" und "Mozilla/4.61 [en] (X11; U; ) - BrowseX (2.0.0 Windows)" Fakes, "Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)" eigentlich leicht zu erkennen; "Mozilla/4.61 (Macintosh; I; PPC)" könnte theoretisch ein Netscape4 sein und wurde selbst von meinem Auswertungsprogramm dafür gehalten, ist es aber doch nicht gewesen.

        Ich glaube, wenn ich mir die Mühe machen würde und die gelegentlich von meinem Programm noch als Netscape4 angegebenen Logeinträge genau zu untersuchen, müsste ich wohl ein paar Jahre zurück gehen, um wirklich noch einen echten zu finden.

        freundliche Grüße
        Ingo

          1. <link> mit media="print" ist mir sehr unsympathisch.

          Das ist aber die beste Methode.

          Aber eine Begründung hast du dafür nicht?
          ich hätte da eine: dieses Element ist exakt dafür da, externe Resourcen einzubinden. Das style-Element hingegen dazu, CSS direkt in die Seite zu setzen.

          Sorry, aber ich sehe da nach wie vor keinen relevanten funktionellen Unterschied. Der <link>-Weg mag direkter sein, aber ihn deshalb als "besser" zu bezeichnen, kann ich nicht nachvollziehen. Mir erscheint das Jacke wie Hose.

          Ich wollte Uraltbrowsern das böse CSS ersparen und binde deshalb lieber mit @import ein.
          Das mach(t)e ich ja auch so. Allerdings: was sollte an einem CSS für einen ordentlichen Ausdruck "böse" sein?

          Das Wörtchen "böse" hätte ich in Anführungszeichen setzen sollen. Natürlich ist es nicht böse, gewisse Browser benehmen sich nur so.

          Gerade _wenn_ Du ein Herz für die manchmal noch im Promille-Bereich anzutreffenden Uralt-Browser hast, solltest Du ihnen zumindest einen ansehnlichen Ausdruck spendieren.

          Ohne das jetzt evaluiert zu haben: Wenn ich mir angucke, wie Uralt-Browser CSS auf dem Bildschirm umsetzen (besser: nicht umsetzen), mag ich an eine Druck-CSS gar nicht denken …

          Oder Du stellst Dich auf den Standpunkt: Ansehen der Seite ohne CSS ist zwar nicht schön, macht die Seite aber wenigstens nutzbar - ein sinnvoller Ausdruck wäre aber zuviel verlangt...

          Zumindest in diesem Fall ist es so, dass eine Seite, die am Bildschirm ohne CSS nutzbar ist, im Ausdruck nicht minder nutzbar wird. Kein CSS für den Bildschirm, aber CSS für den Ausdruck macht daher wenig Sinn, eher schon erstmal CSS für den Bildschirm und danach beim Druck weitersehen.

          Mir überhaupt Gedanken über den CSS-Einsatz für Netscape 4 zu machen, ist mir dann aber zu viel des Aufwands, ganz im Gegensatz zu den paar Sekunden, die das Eintippen von @import benötigt. Die Seiten sind ohne CSS nutzbar, wer das optische Sahnehäubchen will, möge sich bitte einen neuen Browser besorgen.
          Kurzum: Ich wäge in meinem individuellen Rahmen nach Aufwand für mich und Nutzen für die Besucher ab und möchte auch in Zukunft in diesem Rahmen agieren. Daher die Nachfrage, denn nachvollziehbarerweise möchte auf der anderen Seite auch ich nicht einen (vermutlich) ganzen Haufen Ausdrucker mit modernen Browsern wegen ein paar Netscape-4-Nutzer schlechter stellen.

          Dann habe ich die Netscape-4-Einträge wohl geträumt.
          Vermutlich hat Dein Statistikprogramm Dir diese vorgegaukelt.

          Nope, keine statistische Auswertung, ich schaue direkt in die Protokolle, und wenn da etwas auftaucht à la

          2008-02-17 18:00:55 | /  | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
          2008-02-17 18:01:09 | /a | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
          2008-02-17 18:01:49 | /b | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
          2008-02-17 18:03:18 | /a | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
          2008-02-17 18:03:36 | /c | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)

          und dieser zudem keine CSS-Daten abruft, dann bin ich mir recht sicher, einen echten Mozilla vor der Nase zu haben.

          Grüße, Frunk

          1. Hi,

            ich hätte da eine: dieses Element ist exakt dafür da, externe Resourcen einzubinden. Das style-Element hingegen dazu, CSS direkt in die Seite zu setzen.

            Sorry, aber ich sehe da nach wie vor keinen relevanten funktionellen Unterschied. Der <link>-Weg mag direkter sein, aber ihn deshalb als "besser" zu bezeichnen, kann ich nicht nachvollziehen. Mir erscheint das Jacke wie Hose.

            Der Unterschied ist ähnlich wie der zwischen <p class="Seitenueberschrift"> und <h1>.

            Kein CSS für den Bildschirm, aber CSS für den Ausdruck macht daher wenig Sinn

            aber sicher doch! Denke nur an die Ausblendung der im Ausdruck funktionslosen Navigation.

            Nope, keine statistische Auswertung, ich schaue direkt in die Protokolle, und wenn da etwas auftaucht à la

            2008-02-17 18:00:55 | /  | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
            2008-02-17 18:01:09 | /a | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
            2008-02-17 18:01:49 | /b | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
            2008-02-17 18:03:18 | /a | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)
            2008-02-17 18:03:36 | /c | Mozilla/4.79 [de] (X11; U; Linux 2.4.21 i686)

            und dieser zudem keine CSS-Daten abruft, dann bin ich mir recht sicher, einen echten Mozilla vor der Nase zu haben.

            Die Wahrscheinlichkeit ist hier wirklich sehr hoch. Solche Besucher hatte ich auf meinen Seiten allerdings lange nicht mehr.

            freundliche Grüße
            Ingo

      3. Moin!

        1. <link> mit media="print" ist mir sehr unsympathisch.

        Das ist aber die beste Methode.

        Aber eine Begründung hast du dafür nicht? Ist das so wie Vögel fliegen und die Erde eine Scheibe ist? Wo soll der (in der Theorie) funktionale Vorteil gegenüber @import liegen?

        Sie funktioniert browserübergreifend - im Gegensatz zu @import.

        Das reicht mir als Begründung. Die Probleme mit den Alternativen hast du ja schon selbst bis ins Detail dargelegt.

        Ich wollte Uraltbrowsern das böse CSS ersparen und binde deshalb lieber mit @import ein.

        Wo soll da der Unterschied sein?

        Der Unterschied ist, dass Netscape 4 @import im Gegensatz zu <link> nicht kennt und man so eine wunderschöne CSS-Browserweiche bekommt, nämlich eine, die ohne irgendwelche grausamen Verrenkungen auf Basis der Browserkennung arbeitet.

        Netscape 4 importiert sowieso nur CSS-Links mit media="screen". Der wird von deinem Druckstylesheet also gar nicht beeinträchtigt.

        Netscape 4 kommt nicht mehr vor.

        Dann habe ich die Netscape-4-Einträge wohl geträumt. Wenn du dich dahingehend bequemen könntest, statt universeller Wahrheiten begründete Aussagen zu geben, wäre deine Einlassung hilfreich :->

        Wie Ingo es andeutete: Welche von den angeblichen NS4-Logeinträgen sind tatsächlich von echten Netscape 4 verursacht? Und welchen Anteil an Besuchern machen die aus?

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
          1. <link> mit media="print" ist mir sehr unsympathisch.

          Das ist aber die beste Methode.

          Wo soll der (in der Theorie) funktionale Vorteil gegenüber @import liegen?

          Sie funktioniert browserübergreifend - im Gegensatz zu @import.

          Der Witz ist doch gerade, dass @import nicht browserübergreifend funktioniert und Netscape 4 in der Folge nicht vor lauter CSS gegen die Wand rennt.

          Netscape 4 importiert sowieso nur CSS-Links mit media="screen". Der wird von deinem Druckstylesheet also gar nicht beeinträchtigt.

          Nein, aber vom Stylesheet für den Bildschirm. Ja, die CSS-Regeln sind in korrekter Notation, und nein, ein position:absolute-Chaos oder dergleichen habe ich nicht, ganz im Gegenteil. Trotzdem ist das, was Netscape 4 daraus macht, - nicht schön …

          Wie Ingo es andeutete: Welche von den angeblichen NS4-Logeinträgen sind tatsächlich von echten Netscape 4 verursacht?

          Siehe dort.

          Und welchen Anteil an Besuchern machen die aus?

          So alleine unerheblich, die Frage ist vielmehr, wie der Anteil im Verhältnis zum Aufwand (für die Umgehung von Browserfehlern) steht. Genau dies versuche ich zu ergründen, mit welchem Aufwand ich Druck-CSS für moderne Browser und eine nutzbare Seite auch unter Netscape 4 unter einen Hut bekomme.

          Gruß, Frunk

          1. Moin!

            1. <link> mit media="print" ist mir sehr unsympathisch.

            Das ist aber die beste Methode.

            Wo soll der (in der Theorie) funktionale Vorteil gegenüber @import liegen?

            Sie funktioniert browserübergreifend - im Gegensatz zu @import.

            Der Witz ist doch gerade, dass @import nicht browserübergreifend funktioniert und Netscape 4 in der Folge nicht vor lauter CSS gegen die Wand rennt.

            Netscape 4 importiert sowieso nur CSS-Links mit media="screen". Der wird von deinem Druckstylesheet also gar nicht beeinträchtigt.

            Nein, aber vom Stylesheet für den Bildschirm. Ja, die CSS-Regeln sind in korrekter Notation, und nein, ein position:absolute-Chaos oder dergleichen habe ich nicht, ganz im Gegenteil. Trotzdem ist das, was Netscape 4 daraus macht, - nicht schön …

            Fassen wir zusammen:

            <link media="print"> wird von allen CSS-verständigen Browsern verstanden, und vom Netscape 4 ignoriert.

            @import url() wird von allen CSS-verständigen Browsern verstanden, und vom Netscape 4 ignoriert.

            Paßt doch. Muß nur in der gewünschten Reihenfolge eingebunden werden.

            @import url() screen; hingegen wird vom IE 6 und 7 falsch ausgeführt - selbst wenn man mit einem serverseitigen Redirect bzw. Rewrite die falsche URL auf die korrekte CSS-URL ummappen würde, dürfte das Detail "CSS nur für Screen einbinden" diesem Browser verborgen bleiben - ansonsten würde er ja wohl korrekt arbeiten.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
      4. Szervusz!

        Der Unterschied ist, dass Netscape 4 @import im Gegensatz zu <link> nicht kennt und man so eine wunderschöne CSS-Browserweiche bekommt, nämlich eine, die ohne irgendwelche grausamen Verrenkungen auf Basis der Browserkennung arbeitet.

        Für Netscape 4 gibt es aber auch genügend andere Browserweichen. Beispielsweise kannst Du /*/*/ am Anfang Deines CSS notieren. Das ist nur ein auskommentierter Slash, aber Netscape 4 verpeilt das Kommentarende. Alles bis zum nächsten Kommentar wird dann ignoriert.
        Ich verstecke immer, wenn ich ein Layout gebastelt habe, das Netscape 4 nicht hinbekommt (also fast immer ;-) ) mein komplettes CSS mit dieser Methode. Die (sehr seltenen) Netscape-4-User sehen dann unformatiertes HTML - das ist noch benutzbar, und ich muß mich nicht mit der alten Krücke rumschlagen.

        Viele Grüße vom Længlich

        1. Der Unterschied ist, dass Netscape 4 @import im Gegensatz zu <link> nicht kennt und man so eine wunderschöne CSS-Browserweiche bekommt

          Für Netscape 4 gibt es aber auch genügend andere Browserweichen. Beispielsweise kannst Du /*/*/ am Anfang Deines CSS notieren. Das ist nur ein auskommentierter Slash, aber Netscape 4 verpeilt das Kommentarende.

          Aha! Ich sehe ein Licht!

          Danke, Frunk