sven steiner: abfrage ob css enabled ist

zu allererst....

ich habe mal wieder das ganze forum durchsucht und auch schon
einen ansatz gefunden. naemlich diesen:

<html>
<head>
<title>css-abfrage</title>
</head>

<body>

<div>test</div>

<script language="JavaScript">
if (document.all[0].style) { alert("ie") }
if (document.layers[0]) { alert("ns") }
</script>

</body>
</html>

funkt im ie super. er macht brav einen alert. aber netscape macht
einfach gar nichts. weiss jemand wie man es anders loesen kann?

vielen dank im voraus
sven

  1. Hi Sven,

    if (document.all[0].style) { alert("ie") }
    if (document.layers[0]) { alert("ns") }

    Das Problem ist - die If-Abfrage überprüft, ob es den Layer mit der Index-Nummer 0 gibt. Wenn Du aber keine Layer definiert hast, gibt es ihn auch nicht. Was Du vermutlich suchst ist die Abfrage, ob der Browser das LayerObjekt kennt (nämlich nur NS 4.x), das geht so:

    if(document.layers) { ... }

    Was mir aber nicht klar ist - was hat das mit einer CSS-Abfrage zu tun?

    Grüße,

    Utz

    1. Was mir aber nicht klar ist - was hat das mit einer CSS-Abfrage zu tun?

      Hallo
      Ich nehme mal an, dass er davon ausgeht, dass der Netscape Navigator kein CSS versteht, was ja durchaus stimmt. Die paar Dinge, die er kennt...
      Bloed nur, dass bei der Abfrage wohl auch der IE 4.0 als CSS-faehig erkannt werden kann.? Der IE 4.0 ist aber nicht unbedingt besser als NN 4.xx

      MfG
      Thomas

    2. hi utz,

      das problem ist, das wenn ich nach document.layer abfrage
      also if (document.layers) {....} ist es egal ob sie aktiv
      oder deaktiv geschaltet habe. er macht die abfrage auf jeden
      fall.

      ?-)

      sven

      1. Hi sven,

        du warst mit deinem beispiel schon auf dem richtigem Wege:

        <html>
        <head>
        <title>css-abfrage</title>
        </head>

        <body>

        <div>test</div>

        <script language="JavaScript">
        if (document.all[0].style) { alert("ie") }
        if (document.layers[0]) { alert("ns") }
        </script>

        </body>
        </html>

        Nur ist für den NN4.x ein <div> ohne die CSS Angabe position: relative/absolute kein Layer.

        Füge folgendes in den <head> Bereich hinzu:

        <style type="text/css">
        <!--
          .norm
          {
            position: absolute;
          }
        -->
        </style>

        und ändere das <div>:

        <div class="norm">test</div>

        Dann bringt der NN auch die alert-Box und du weißt, dass CSS eingeschalten ist.

        mfg

        ALEX

        1. hi alex,

          die alert-box kommt zwar, aber sie kommt auch wenn ich im NS
          nun die style-sheets ausschalte. das ist also auch noch nicht
          richtig.

          hast du noch eine idee?

          sven

          Nur ist für den NN4.x ein <div> ohne die CSS Angabe position: relative/absolute kein Layer.

          Füge folgendes in den <head> Bereich hinzu:

          <style type="text/css">
          <!--
            .norm
            {
              position: absolute;
            }
          -->
          </style>

          und ändere das <div>:

          <div class="norm">test</div>

          Dann bringt der NN auch die alert-Box und du weißt, dass CSS eingeschalten ist.

          mfg

          ALEX

  2. Moin!

    ich habe mal wieder das ganze forum durchsucht und auch schon
    einen ansatz gefunden. naemlich diesen:

    ...

    Hmm, was hast Du genau vor? Eine Meldung, daß der andere CSS aktivieren soll? CSS und Javascript sind bei Netscape gekoppelt. Ist Javascript deaktiviert, funktionieren die CSS nicht mehr, dies dürfte aber nicht jedem Benutzer klar sein, da es nicht offensichtlich ist.

    Falls Du einen Hinweis bringen möchtest, wäre es einfacher, einfach eine Meldung wie "Die Seite sieht mit CSS aber besser aus" per CSS auf die selbe Farbe wie den Hintergrund zu bringen. Es gibt auch IMHO eine Möglichkeit, Objekte per CSS unsichtbar zu machen, ich hab's nur noch nie getestet.

    Tschau!

    Michael

    1. hi michael,

      ich habe einfach vor abzufragen, ob die style-sheets im browser
      deaktiviert sind.

      finde keine moeglichkeit....

      sven

  3. Hi Sven!

    Wie Michael Vogel schon geschrieben hat: ist Javascript im Navigator
    deaktiviert, so funktionieren die Stylesheets nicht mehr.
    Ist Javascript schon aktiviert, geht die Abfrage ganz ähnlich wie
    Dein Ansatz:

    <div name="styleTest" style="position:absolute;visibility:hidden;left:0px;top:0;"></div>

    <script language="javascript">
    var stylesOn=false;
    if(document.styleTest) {stylesOn=true;}
    alert("stylesheet aktiviert:"+stylesOn)
    </script>

    Soviel ich weiss, lassen sich die Stylesheets im IE gar nicht deaktivieren, dort
    kannst Du Dir eine Abfrage also sparen.

    lg Hobbes
    <img src="http://server.datenwerk.at/~til/img/hobbes.gif" alt="">

    1. hey hobbes,

      das war's was mir noch gefehlt hat. jetzt funkts enddlich!!
      1.000 dank!

      da man wie du schon sagtest im IE5 eh die css nicht abschalten
      kann braucht man es nur im NS zu pruefen.

      hier der code:

      <html>
      <head>
      <title>css-abfrage</title>
      <style type="text/css">
      <!--
      #Test { position: absolute; left:250px; top:250px; }
      -->
      </style>
      </head>

      <body>

      <div id="Test">test</div>

      <script language="javascript">
      var stylesOn = false;

      if(document.layers.Test) {stylesOn=true;}
      alert("aktiviert : "+stylesOn)
      </script>

      </body>
      </html>

      sven

    2. Moin

      Soviel ich weiss, lassen sich die Stylesheets im IE gar nicht deaktivieren, dort
      kannst Du Dir eine Abfrage also sparen.

      Geht schon, und sogar sehr radikal: Extras --> Interneteinstellung --> Eingabehilfen. Eine gute Einstellung, wenn ein wildgewordener Webdesigner meine müden Augen mittels CSS unter 10 pt zwingen will :-))

      Swen