XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Knowledge Base (http://xhtmlforum.de/forumdisplay.php?f=79)
-   -   @print - IE-BUG [expression] / background-color (http://xhtmlforum.de/showthread.php?t=32720)

ulle 30.06.2004 10:53

Fazit :arrow:


[expression] :arrow: geben die Möglich, nur im IE, JavaScript innerhalb einer CSS-Anweisung auszuführen.

Für die folgende Erklärung habe ich eine vereinfachte Rückgabe ohne Bedingung gewählt.

Code:

                @media screen {
                #frame { width: auto;}
                }
                @media print {
                #frame { width: 200px; }
                }

Druckvorschau :arrow: #frame-Container 200px breit


Code:

                @media screen {
                #frame { width: auto;}
                }
                @media print {
                #frame { width: expression("200px"); }
                }

Druckvorschau :arrow: #frame-Container 200px breit


Code:

                @media screen {
                #frame { width: expression("auto"); }
                }
                @media print {
                #frame { width: expression("200px"); }
                }

Druckvorschau :arrow: #frame-Container so breit wie Papier [BUG]


Code:

                @media screen {
                #frame { width: expression("auto"); }
                }
                @media print {
                #frame { width: 200px; }
                }

Druckvorschau :arrow: #frame-Container so breit wie Papier [BUG]



IE-EXPRESSION-PRINT-BUG


Eine im SCREEN-Mode per [expression] gesetzte CSS-Eigenschaft,
kann durch einschalten des PRINT-Mode, oder durch einen anderen Event - wie z.B. Resize-Window,
nicht mehr überschrieben werden :!::!:


Zitat:

Zitat von ulle
Dies sollte sich jeder bewußt sein der IE-expression in seinem CSS benutzt.
Zum tragen kommt dieser BUG auch nur falls genau die Eigenschaft, die per [expression] gesetzt würde, im PRINT-Mode verändert werden soll.

Klassisches Beispiel:
max-width im IE mit JavaScript simulieren :?

Und wie bei BUGs so üblich :arrow: keine Lösung möglich


Ich frage mich gerade ob mir niemand helfen wollte oder keiner sonst [expression] benutzt.


come@death 13.07.2004 13:49

ich suche schon seit langem nach einer möglcihkeit per javascript herauszufinden, welchen media type der browser gerade nutzt... kennt jemand einen event, oder überhaupt irgendeine möglichkeit sowas herauszufinden?

ulle 13.07.2004 14:34

Zitat:

welchen media type der browser gerade nutzt...
Selbst wenn Du es wüßtest würde es nichts Nutzen.........Du kannst die [max-width -- simulation für den IE] ja mal einbauen und einen RESIZE (< max-width) vom Window tätigen, ergebnis ist nur ein RELOAD der Site läßt das [width: auto] erneut wirken.

come@death 13.07.2004 14:48

Zitat:

Selbst wenn Du es wüßtest würde es nichts Nutzen.........Du kannst die [max-width -- simulation für den IE] ja mal einbauen und einen RESIZE (< max-width) vom Window tätigen, ergebnis ist nur ein RELOAD der Site läßt das [width: auto] erneut wirken.
darauf wollte ich auch garnicht hinaus... es ging MIR nur einen weg, per javascript herauszufinden, welcher media type genutzt wird...

WBTMagnum 22.06.2006 17:11

Hallo,

Ganz nach dem Motto "Besser spät als nie", hier ein Workaround.

CSS bleibt wie gehabt. ZB:
Code:

#someElement {
  width: expression(document.body.clientWidth > 930? "930px": "auto" );
}

Dann folgendes JavaScript in die Seite "einbauen":
Code:

<script type="text/javascript">
<!--
prevWidth = 0;

function removeWidth() {
  o = document.getElementById("someElement");
  prevWidth = o.style.width;
  o.style.width = "auto";
}

function restoreWidth() {
  o = document.getElementById("someElement");
  o.style.width = prevWidth;
}

window.onbeforeprint=removeWidth;
window.onafterprint=restoreWidth;
-->
</script>

Dadurch werden die onbeforeprint und onafterprint Events vom IE gesetzt, sodass die Funktionen removeWidth() und restoreWidth() aufgerufen werden.

Dh vor jedem Druck wird die Breite des entsprechenden Elements auf "auto", und nach dem Drucken wieder zurück auf den Ausgangswert gesetzt.


Vielleicht hilft das ja noch jemandem weiter.

Liebe Grüße,
Sascha

andir 23.06.2006 10:02

Danke.

Werde das bei Gelegenheit mal ausprobieren. Hört sich sehr gut an.

grüsse


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:16 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023