mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 09:07 Benutzername: Passwort: Auto-Login

Thema: javascript-ie7-css-weiche vom 22.10.2010


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> javascript-ie7-css-weiche
Autor Nachricht
ExMD
Threadersteller

Dabei seit: 27.01.2005
Ort: Saarland
Alter: 45
Geschlecht: Männlich
Verfasst Fr 22.10.2010 13:32
Titel

javascript-ie7-css-weiche

Antworten mit Zitat Zum Seitenanfang

folgendes problem:

webseite benötigt für ie7 ein angepasstes css.
conditional comments funktionieren nicht, vom betreiber der seite wird ein javascript "empfohlen", das wie folgt aussieht:

Code:

<script type="text/javascript">
if(navigator.appVersion.indexOf ("MSIE 7.")!=-1)
  {
  document.write("<link rel='stylesheet' type='text/css' href='http://www.landsend.de/de_static/webcontent/css/20101014_le_canvas_navigation_IE7.css'>");
  }
else
  {
  document.write("<link rel='stylesheet' type='text/css' href='http://www.landsend.de/de_static/webcontent/css/20101014_le_canvas_navigation.css'>");
  }
</script>


problem bei der suppe: das script lädt das css bei jedem neuen seitenaufruf erneut rein und "vermehrt" so die positionsangaben.
beispiel: startseite ist ein über das css angesteuertes div auf 10 pixel verschoben. klicke ich auf den nächsten menüpunkt, zählt er zu den 10pxl noch mal 10pxl hinzu, weil er das css noch mal reinlädt, womit das div bereits um 20pxl verschoben wurde. das setzt sich so lange munter fort, bis das div komplett aus dem sichtbaren feld verschwunden ist.

wer hat eine lösung parat mit der wir das so abändern können, dass er das nicht mehr pro seite neu reinlädt ODER das reingeladene script löscht und dann wieder neu lädt? wir hatten an folgende lösung gedacht, aber macht die sinn?

Code:
<script type="text/javascript">
if(navigator.appVersion.indexOf ("MSIE 7.")!=-1)
  {
  document.clear("<link rel='stylesheet' type='text/css' href='http://www.landsend.de/de_static/webcontent/css/20101014_le_canvas_navigation_IE7.css'>");
  document.write("<link rel='stylesheet' type='text/css' href='http://www.landsend.de/de_static/webcontent/css/20101014_le_canvas_navigation_IE7.css'>");
  }
else
  {
  document.write("<link rel='stylesheet' type='text/css' href='http://www.landsend.de/de_static/webcontent/css/20101014_le_canvas_navigation.css'>");
  }
</script>


und bitte, bitte, mit ganz viel sahne oben drauf... ich brauch keine diskussion über sinn oder unsinn dieser umsetzung, auch keine nachfragen oder ratgeber, dass wir den betreiber dafür in rechenschaft ziehen, ihn verklagen, steinigen oder mal nett nachfragen sollen.
uns steht NUR dieser weg zur zeit zur verfügung und dafür brauch ich ne lösung. vielen dank an den, der es einhält und weiterhelfen kann, er sei sich eines freibieres beim nächsten mgi-treffen gewiss.


Zuletzt bearbeitet von ExMD am Fr 22.10.2010 13:33, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Morgo

Dabei seit: 10.08.2005
Ort: Von Kowelenz bis Kölle
Alter: 39
Geschlecht: Männlich
Verfasst Fr 22.10.2010 14:37
Titel

Re: javascript-ie7-css-weiche

Antworten mit Zitat Zum Seitenanfang

ExMD hat geschrieben:


problem bei der suppe: das script lädt das css bei jedem neuen seitenaufruf erneut rein und "vermehrt" so die positionsangaben.
beispiel: startseite ist ein über das css angesteuertes div auf 10 pixel verschoben. klicke ich auf den nächsten menüpunkt, zählt er zu den 10pxl noch mal 10pxl hinzu, weil er das css noch mal reinlädt, womit das div bereits um 20pxl verschoben wurde. das setzt sich so lange munter fort, bis das div komplett aus dem sichtbaren feld verschwunden ist.


Kannst du das etwas genauer erklären oder hast du ein Beispiel? Denn selbst wenn das gleiche Stylesheet mehrmals referenziert wird, überschreiben sich ja eigentlich lediglich die Selektoren..

Ansonsten würde ich versuchen, das Stylesheet ausfindig zu machen, und nur dann zu setzen, wenn es noch nicht da ist. Aber warum das nötig sein soll, verstehe ich ehrlich gesagt immernoch nicht.

Vielleicht sowas in der Art (schnell runtergeschrieben)?
Code:

function setStylesheet(href) {
        var links = document.getElementsByTagName('link');
        for (var x = 0; x < links.length; x++) {
            if (links[x].href == href) {
                return;
            }
        }
       document.write("<link rel='stylesheet' type='text/css' href='"+href+"'>");
}

setStylesheet('http://www.landsend.de/de_static/webcontent/css/20101014_le_canvas_navigation_IE7.css');


Btw, hast du schonmal versucht, den Betreiber zu verklagen, zu steinigen oder mal nett nachzufragen, ob Conditional Comments möglich sind? *zwinker*
  View user's profile Private Nachricht senden
Anzeige
Anzeige
fyll

Dabei seit: 20.09.2003
Ort: Augsburg
Alter: 39
Geschlecht: Männlich
Verfasst Fr 22.10.2010 14:54
Titel

Antworten mit Zitat Zum Seitenanfang

Wie schon gesagt wurde - das is eigentlich völlig unlogisch Au weia!
Aber bei sonem Betreiber spukts bestimmt auch im Apache ^^

Als Lösungsweg würd ich vorschlagen, beim ersten Aufruf nen Cookie zu setzen und die CSS nur eben dann einbinden, wenn dieser eben nicht existiert.
  View user's profile Private Nachricht senden
Smooth-Graphics

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 22.10.2010 15:00
Titel

Antworten mit Zitat Zum Seitenanfang

Wozu nen Cookie?

Eine einfache JS-if-Abfrage ob ob das Stylesheet eingebunden wurde beim Aufruf der Seite. Und wenn nicht, dann solls eingebunden werden.. oder hab ich irgend einen Aspekt außer Acht gelassen?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
fyll

Dabei seit: 20.09.2003
Ort: Augsburg
Alter: 39
Geschlecht: Männlich
Verfasst Fr 22.10.2010 15:09
Titel

Antworten mit Zitat Zum Seitenanfang

Smooth-Graphics hat geschrieben:
Wozu nen Cookie?

Eine einfache JS-if-Abfrage ob ob das Stylesheet eingebunden wurde beim Aufruf der Seite. Und wenn nicht, dann solls eingebunden werden.. oder hab ich irgend einen Aspekt außer Acht gelassen?

jo stimmt - an document.styleSheets[x].cssRules hatte ich nich gedacht Ooops
  View user's profile Private Nachricht senden
 
Ähnliche Themen JavaScript-Weiche
Flash weiche ohne Javascript
Flash-Weiche
Flash Weiche?
Weiche Smartphone
weiche maske in flash
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.