Joachim: Stylesheets und Browserfenster

hallo,
ich versuche externe Stylesheets abhaengig von der Browserfenstergroesse zu laden. Das folgende Script funktioniert beim NC, MSIE aber meldet: "document.body.clientWidth;" ist kein Objekt!

if(document.layers)
    {
     var breit = self.innerWidth;
     var hoch = self.innerHeight;
}

if(document.all)
    {
     var breit = document.body.clientWidth;
     var hoch = document.body.clientHeight;
}

if (breit<=600)
{
document.writeln('<link rel=stylesheet href="stil1.css" type="text/css">');
}

if (breit>=601)
{
document.writeln('<link rel=stylesheet href="stil2.css" type="text/css">');
}

window.onresize=neuladen;

function neuladen()
{
self.location.reload();
}

Kann mir jemand sagen, wo der Fehler steckt?

Gruss Joachim

  1. Hi,

    ich versuche externe Stylesheets abhaengig von der Browserfenstergroesse zu laden. Das folgende Script funktioniert beim NC, MSIE aber meldet: "document.body.clientWidth;" ist kein Objekt!

    wirklich mit Semikolon? In dem Fall (widerstrebt mir auch, aber was soll's...) mach es doch einfach mal weg:

    if(document.all)
        {
         var breit = document.body.clientWidth
         var hoch = document.body.clientHeight

    »»  }

    Im Grunde erscheint mir der Code jedenfalls korrekt. Wenn Du allerdings ohnehin nur nach der Breite das Stylesheet lädst, brauchst Du "hoch" gar nicht zu bestimmen.

    Cheatah

  2. ich versuche externe Stylesheets abhaengig von der Browserfenstergroesse zu laden. Das folgende Script funktioniert beim NC, MSIE aber meldet: "document.body.clientWidth;" ist kein Objekt!

    if(document.layers)
        {
         var breit = self.innerWidth;
         var hoch = self.innerHeight;

    »»      }

    if(document.all)
        {
         var breit = document.body.clientWidth;
         var hoch = document.body.clientHeight;

    »»      }

    versuch's doch mal mit screen.width bsw. screen.height siehe auch <../../teck.htm>

    1. versuch's doch mal mit screen.width bsw. screen.height siehe auch <../../teck.htm>

      ich vergaß - das klappt in beiden!

  3. Hallo Joachim,

    nur mal als Idee: Könnte der IE vielleicht Probleme haben, weil er zu dem Zeitpunkt an dem das Script die body.clientWidth abfragt, noch kein Body-Object hat, weil das Script ja wahrscheinlich im head steht?

    Gruß

    Leonhard

    1. Hallo,

      nur mal als Idee: Könnte der IE vielleicht Probleme haben, weil er zu dem Zeitpunkt an dem das Script die body.clientWidth abfragt, noch kein Body-Object hat, weil das Script ja wahrscheinlich im head steht?

      Und ich vermute mal, Du bist absolut auf der richtigen Faehrte.

      Ist zwar ueblich, fuer Netscape self.innerWidth/-Height
      und fuer MSIE document.body.clientWidth/-Height
      zu benutzen.
      Aber man sollte sich bewusst sein, dass das trotzdem nicht dasselbe ist.
      self (=Fenster) ist da, sowie es offen ist
      document.body setzt BODY voraus.

      Christine

      1. hallo,

        erst mal vielen Dank fuers Mitdenken :-) Frage: wenn ich folgende Funktion im body-tag ueber onload aufrufe, stehen dem MSIE die Fensterwerte ja zur Verfuegung:

        function test()
        {
        var breit = document.body.clientWidth;
        alert(+breit);
        }

        Kann er aber danach erst das gewuenschte Stylesheet schreiben und laden? (Ich konnte ihn noch nicht ueberreden...)

        Vielleicht faellt Euch ja noch was ein, bis dahin viele Gruesse   Joachim

        PS. Christine, warum muss es bloss in diesem Fall wieder onload="test()" mit() heissen (sonst Fehler), ich glaube, fuer diese Feinheiten bin ich zu unbegabt...
        (Bezogen auf link="http://www.teamone.de/selfaktuell/self_forum/13411.html")

        1. PS. Christine, warum muss es bloss in diesem Fall wieder onload="test()" mit() heissen (sonst Fehler), ich glaube, fuer diese Feinheiten bin ich zu unbegabt...
          (Bezogen auf link="http://www.teamone.de/selfaktuell/self_forum/13411.html")

          sonst hält der Browser das ganze für 'ne Variable.