suit: Medientyp mit JavaScript bestimmen (in Druckansicht kein JS)

Hallo,

wenn die Seite für die Bildschrimausgabe mit aktivem JavaScript aufrufe, sind im CSS entsprechende Regeln definiert, die nur angewandt werden, wenn JavaScript aktiviert ist (über eine zusätzliche Klasse im html-Element).

Einige Spielereien werden aber durch ein Framework eingefügt und direkt über die Style-Eigenschaft gesetzt.

Wenn man nun die Seite ausdrücken möche, fehlen einige Dinge im entsprechenden Ausdruck - z.B. wird ein paar Elementen ein overflow: hidden; verpasst usw.

Leider kann ich das nicht umgehen, da ich hierfür ein fertiges Framework verwenden muss, welches das leider "so" macht.

Nun muss ich aber dennoch bestimmen, ob grade das print-CSS in Verwendung ist.

Aktuell ist mein Ansatz, zu bestimmen ob ein bestimmtes Element "da" ist oder nicht - z.B. ob das Menü (welches im print-CSS ausgeblendet ist) eben die display-Eigenschaft "none" besitzt. Wenn das Menü also nicht dargestellt wird, ist es offensichtlich das print-CSS und ich setze im body zusätzlich die Klasse "print" die durch das JavaScript-Framework erkannt wird und entsprechend nicht im CSS herumgräbt.

Funktioniert soweit auch relativ gut - mit Ausnahme, wenns eine Seite ist die z.B. Überhaupt kein Menü hat - da muss ein anderes element herhalten.

Die Frage ist: kann ich mit JavaScript irgendwie (zuverlässig) einfach den aktuellen Medientyp (aufgrundessen das CSS angewand wird) bestimmmen?

Danke

  1. Hi,

    Die Frage ist: kann ich mit JavaScript irgendwie (zuverlässig) einfach den aktuellen Medientyp (aufgrundessen das CSS angewand wird) bestimmmen?

    Nicht daß ich wüßte.

    Wenn Du explizit die "Druckinterpretation" haben möchtest, dann schalte eine "Druckansicht"-Seite vor, mit print.css auch für den Screen. Auch der nicht standardisierte Event onbeforeprint wird mittlerweile von vielen (allen gängigen?) Browsern unterstützt.

    Ansonsten: Wenn irgendein Framework mit JS Stile setzt, was hindert dich denn daran, sie nachträglich wieder zu löschen/anders zu setzen?

    Wenn man Stile per style setzt, dann gelten sie natürlich für alle Medien. Aber es gibt ein CSSDOM und darüber kann man Stile gezielt für einzelne Medien setzen.

    Schlimmstenfalls muß man halt die originär gesetzten Stile wieder löschen und sie per CSSDOM für den Bildschirm (oder besser: den Drucker) neu setzen.

    Gruß, Cybaer

    --
    Zweck des Disputs oder der Diskussion soll nicht der Sieg, sondern der Gewinn sein.
    (Joseph Joubert, Schriftsteller)
    1. Wenn Du explizit die "Druckinterpretation" haben möchtest, dann schalte eine "Druckansicht"-Seite vor, mit print.css auch für den Screen. Auch der nicht standardisierte Event onbeforeprint wird mittlerweile von vielen (allen gängigen?) Browsern unterstützt.

      Muss ich ausprobieren, danke für den Tipp.

      Ansonsten: Wenn irgendein Framework mit JS Stile setzt, was hindert dich denn daran, sie nachträglich wieder zu löschen/anders zu setzen?

      Das kann ich ja machen, nur ich muss rausfinden, ob ich sie entfernen muss oder nicht - also ob gerade die Druckansicht verwendet wird.

      1. Hi,

        Das kann ich ja machen, nur ich muss rausfinden, ob ich sie entfernen muss oder nicht - also ob gerade die Druckansicht verwendet wird.

        Nein, das mußt Du nicht rausfinden. Du kannst sie entfernen (dann sind sie nicht mehr für alle Medien gültig), und neu setzen - nur eben dann nicht global für alle Medien per style (die hast du ja vorher entfernt), sondern eben nur gezielt per CSSDOM für das Medium, das diese Stile braucht (also z.B. screen).

        Das ist ja eben eines der Probleme von style: gilt für alle Medien und hat auch noch die höchste Priorität.

        Sinnvoller ist des deswegen oft, eben style gar nicht erst zu verwenden, sondern von vorneherein die Stile/Regeln nur für die Medien zu setzen, für die sie gebraucht werden.

        Gruß, Cybaer

        --
        Zweck des Disputs oder der Diskussion soll nicht der Sieg, sondern der Gewinn sein.
        (Joseph Joubert, Schriftsteller)
        1. Sinnvoller ist des deswegen oft, eben style gar nicht erst zu verwenden, sondern von vorneherein die Stile/Regeln nur für die Medien zu setzen, für die sie gebraucht werden.

          Sag' das dem Framework :D

          Danke jedenfalls nochmal - ganz zufrieden bin ich zwar nicht, aber immerhin "funzt" es jetzt.