julchen: Internet Explorer - so eine Browser-ZICKE! ;)

Hallo zusammen,

ich habe ein kleines Problem, dass mich langsam aber sicher in den Wahnsinn treibt...vielleicht steckt irgendwo nur ein winziger Fehler,  vor dem ich schon seit Stunden wie blind sitze und ihn nicht entdecke. Bei Google habe ich mir schon blutige Finger getippt und hier bei SelfHTML die Augen viereckig gelesen - aber leider nichts hilfreiches gefunden!
Ich geb' zu, dass ich von Javascript wirklich nicht sooooooooo viel Ahnung habe, aber bisher hat's immer gereicht! Aber bei dem Problem hier is' leider Ende!

Und zwar frage ich mittels Javascript die Viewport-Breite des Besuchers ab, um ein passendes Stylesheet zu laden. Das mache ich mit folgendem Script von quirksmode.org in einer externen .js-Datei:

var x;
if (self.innerWidth) // all except Explorer
{
 x = self.innerWidth;
}
else if (document.documentElement.clientWidth)
 // Explorer 6 Strict Mode
{
 x = document.documentElement.clientWidth;
}
else if (document.body) // other Explorers
{
 x = document.body.clientWidth;
}

In der HTML-Datei benutze ich dann folgenden Script:

<script type="text/javascript">
if (x <= 123)
document.write('<link rel="stylesheet" type="text/css" href="stylesheet1.css">');

else
document.write('<link rel="stylesheet" type="text/css" href="stylesheet2.css">');
</script>

Das ganze funktioniert auch soweit mit allen Brwosern - nur der Internet Explorer mag nicht so wie ich!
Der IE akzeptiert den Script nur, wenn ich die Abfrage-Schleife 2x laufen lasse und nach jedem Durchlauf x mit document.write (x); ausgeben lasse. Nach nur einem Durchlauf oder ohne die Ausgabe mittels document.write (x); bleibt x im Internet Explorer 'undefined'. Außerdem zerreißt mir document.write (x); das Layout!

Ich wäre absolut dankbar für jeden noch so kleinen Tipp!

Liebe Grüße...julchen

  1. Hi there,

    Und zwar frage ich mittels Javascript die Viewport-Breite des Besuchers ab, um ein passendes Stylesheet zu laden. Das mache ich mit folgendem Script von quirksmode.org in einer externen .js-Datei:

    Ungeachtet der Frage, was die 2 Prozent der Anwender sehen, die javascript deaktiviert haben, aber was machst Du denn, wenn der Anwender den viewport ändert, während er auf Deiner Seite weilt?

    1. Hi Klawischnigg,

      daran bastel' ich gerade mit Hilfe von:
      http://de.selfhtml.org/javascript/beispiele/fensterueberwachen.htm

      Und die 2% die Javascript nicht aktiviert haben...nun ja...die landen auf der Standart-Seite. Die ist dann zwar nich 100% so wie ich sie mir vorstelle, aber doch einigermaßen akzeptabel ;)

      Liebe Grüße...julchen

      1. Hi there,

        ...nun ja...die landen auf der Standart-Seite...

        Bist Du sicher, daß Du sie auf diese Seite locken willst ?;)

        (scnr)

        1. Warum denn nicht, is' doch mal was anderes! *gg*

          Ich finde besonders der hohe Weißanteil ist sehr reizvoll und fördert die Lesbarkeit!

          Aber vielleicht sollte ich lieber die StandarD-Seite statt der StandarT-Seite nehmen ;) ja ja...die Rechtschreibung!

          Liebe Grüße...julchen

  2. Hi,

    Und zwar frage ich mittels Javascript die Viewport-Breite des Besuchers ab, um ein passendes Stylesheet zu laden.

    Du solltest CSS-Probleme versuchen mit CSS zu lösen.

    <script type="text/javascript">
    if (x <= 123)
    document.write('<link rel="stylesheet" type="text/css" href="stylesheet1.css">');

    else
    document.write('<link rel="stylesheet" type="text/css" href="stylesheet2.css">');
    </script>

    Und Besucher ohne Javascript bekommen gar kein CSS?

    Der IE akzeptiert den Script nur, wenn ich die Abfrage-Schleife 2x laufen lasse

    Bedenke, dass document.body zum Zeitpunkt des Scriptaufrufs im head noch gar nicht vorhanden ist.

    freundliche Grüße
    Ingo

    1. Hi Ingo,

      Aber läßt sich den mittels CSS die Größe des Viewports ermitteln? Das wäre mir natürlich noch lieber!

      Die Besucher ohne Javascript landen auf der Standart-Seite...der Script ist nur eine Art "Spielerei", um meinem Perfektionismus entgegenzukommen ;)

      Und daran, dass der document.body noch nicht definiert ist, hatte ich noch gar nicht gedacht! Danke!

      Liebe Grüße...julchen

      1. Tach,

        Aber läßt sich den mittels CSS die Größe des Viewports ermitteln? Das wäre mir natürlich noch lieber!

        nein, das ist einfach nicht nötig, der Viewport ist schließlich 100% breit.

        mfg
        Woodfighter

        1. Das stimmt natürlich, aber es kommt mir darauf an, dass wenn der Viewport größer als XXX Pixel ist ein das Layout umgebendes Hintergrundbild geladen wird, damit der Rest nicht so weiß und fad aussieht! Ja ja...ich weiß...ein statisches Layout...Asche auf mein Haupt!

          Ist der Viewport kleiner als XXX Pixel macht es keinen Sinn das Bild zu laden, da man dem User dadurch nur unnötige Ladezeiten aufhalst!

          Siehst Du jetzt warum ich gerne wüßte wie groß der Viewport ist?

          Liebe Grüße...julchen

          1. Hi,

            Das stimmt natürlich, aber es kommt mir darauf an, dass wenn der Viewport größer als XXX Pixel ist ein das Layout umgebendes Hintergrundbild geladen wird, damit der Rest nicht so weiß und fad aussieht!

            dazu gibt es aber mit Sicherheit nch andere Alternativen.

            Ist der Viewport kleiner als XXX Pixel macht es keinen Sinn das Bild zu laden, da man dem User dadurch nur unnötige Ladezeiten aufhalst!

            ähem... so ein Hintergrundbild sollte ohnehin nicht so groß sein, dass es übermäßige Ladezeit kostet. Du könntest allerdings unproblematisch die Bildschirmbreite abfragen und für den Fall, dass diese selbst bei maximiertem Browserfenster nicht ausreicht, auf das Hintergrundbild verzichten. Alles andere fände ich überflüssig. Vor allem müßtest Du ansonsten ständig die Fensterbreite auf Änderungen überprüfen... und es wäre dann auch recht unschön, wenn bei Verbreiterung plötzlich ein Ladevorgang einsetzen würde.

            freundliche Grüße
            Ingo

            1. Das Bild hat höchstens 20KB - das Laden ginge also relativ schnell. ;)
              Aber ich lasse es lieber weg, wenn man es eh nicht sieht.

              Das mit der Bildschirmbreite wird wahrscheinlich meine "Notlösung" werden.

              Liebe Grüße...julchen

              1. Hi,

                Das Bild hat höchstens 20KB - das Laden ginge also relativ schnell. ;)

                naja, die könntest Du vermutlich noch kleiner kriegen, oder?
                Schau Dir mal mein Füllbild http://css-layout.de/d4.jpg an - das sind nur 7kb.

                freundliche Grüße
                Ingo

                1. Hi Ingo,

                  Ich hab' gerade mal nachgeschaut...das Bild hat 13KB bei einer Größe von 1100x600px - ich denk' das ist erträglich, oder? ;)

                  Und was ich noch loswerden muß:
                  Die CSS-Layout-Seite gefällt mir unheimlich gut...ich mag große Bilder und "Transparenzen" - wirklich superschön!

                  Und Danke nochmal für die Hilfe!

                  Liebe Grüße...julchen

                  1. Hi,

                    Ich hab' gerade mal nachgeschaut...das Bild hat 13KB bei einer Größe von 1100x600px - ich denk' das ist erträglich, oder? ;)

                    aber sicher. Obwohl so ein großes Bild ja vielleicht nicht unbedingt nötig ist.

                    Und was ich noch loswerden muß:
                    Die CSS-Layout-Seite gefällt mir unheimlich gut...ich mag große Bilder und "Transparenzen" - wirklich superschön!

                    Danke. Ich war übrigens echt überrascht, dass ich hier für den IE 7 nur einen einzigen Bug beheben musste und er die vielen IE6-Workarounds nicht mehr benötigte.

                    freundliche Grüße
                    Ingo

  3. Tach,

    Und zwar frage ich mittels Javascript die Viewport-Breite des Besuchers ab, um ein passendes Stylesheet zu laden. Das mache ich mit folgendem Script von quirksmode.org in einer externen .js-Datei:

    mal abgesehen davon, dass ich das für eine ziemlich unsinnige Sache halte, definierst du die Variable x als lokal und kannst deswegen wohl später nicht mehr drauf zugreifen. Dass es in anderen Browsern funktioniert, wundert mich allerdings.

    mfg
    Woodfighter