Bernhard Grabietz: einfache browserabfrage

tag zusammen

mein problem:

ich hab eine navigation mit pullups in form von <div> layern,
die ich auf mouseover zeige.

hab eine einfache javascriptabfrage
_______________________________________

var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
_______________________________________

je nach browser gebe ich nun den layern den zustand

show/visible bzw hide/hidden

das funktioniert dann mal spontan bei dem 6er und 7ner netscape nicht.
habe da eine abfrage gemacht:
_______________________________________________

var ns4 = (document.getElementById)? true:false
_______________________________________________

gibt mir dann auch als ns4 im alert gleich true aus.
aber pullups funktionieren trotzdem nicht.
aber dann auch nicht mehr im 4.7ner netscape.

hat jemand damit schon erfahrung, oder kennt ne abfrage, oder lautet der visible-status bei den beiden neuen netscape anders??

  1. Hi,

    dazu gibt es ausreichend Beispiele und Erläuterungen im Archiv:

    </archiv/2002/10/25287/#m138648>
     </archiv/2002/4/8861/#m48959>
     </archiv/2001/8/28086/#m146491>

    (http://www.google.com/search?q=layers+all+getelementbyid+visibility+site%3Aforum.de.selfhtml.org)

    LG Roland

  2. Hi,

    hab eine einfache javascriptabfrage

    jau.

    das funktioniert dann mal spontan bei dem 6er und 7ner netscape nicht.

    Natürlich nicht. Mozilla kennt keines der beiden proprietären Ansätze.

    var ns4 = (document.getElementById)? true:false

    Das ist falsch; Netscape 4 kann kein DOM. Du brauchst eine _dritte_ Variable mit genau dieser Abfrage, die anschließend bevorzugt zu behandeln ist (neuere IE und Opera kennen beides, sollten aber idealerweise mit DOM eingesetzt werden).

    aber pullups funktionieren trotzdem nicht.

    In Mozilla-Browsern? Hast Du denn den späteren Code auch auf DOM angepasst?

    aber dann auch nicht mehr im 4.7ner netscape.

    Natürlich nicht, der kennt schließlich kein DOM.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. 1. scheisse, voll nen wolf geschrieben, hats nicht eingetragen!

      2. mein problem genauer.

      javascript browserabfrage:

      var ns4 = (document.layers)? true:false
      var ie4 = (document.all)? true:false

      das ist soweit klar, funst auch super

      neue abfrage:

      var others = (document.getElementById)? true:false

      als alert gibt auch bei den beiden neuen netscapes true aus. also auch ok.

      mein problem die show/hide funktionen
      sehen bei mir wie folgt aus:

      function show(id) {
       if (ns4) document.layers[id].visibility = "show"
       else if (ie4) document.all[id].style.visibility = "visible"
      }

      function hide(id) {
       if (ns4) document.layers[id].visibility = "hide"
       else if (ie4) document.all[id].style.visibility = "hidden"
      }

      nun ist meine frage, wie bin ich die andere anweisung für die neuen netscapes ein!???

      meine idee war ja:

      else if (others) document.getElementById[id].style.visibility = "visible"

      oder eben

      else if (others) document.getElementById[id].style.visibility = "hidden"

      aber das funktioniert nicht. und das regt mich gerade voll auf!!!

    2. 1. scheisse, voll nen wolf geschrieben, hats nicht eingetragen!

      2. mein problem genauer.

      javascript browserabfrage:

      var ns4 = (document.layers)? true:false
      var ie4 = (document.all)? true:false

      das ist soweit klar, funst auch super

      neue abfrage:

      var others = (document.getElementById)? true:false

      als alert gibt auch bei den beiden neuen netscapes true aus. also auch ok.

      mein problem die show/hide funktionen
      sehen bei mir wie folgt aus:

      function show(id) {
       if (ns4) document.layers[id].visibility = "show"
       else if (ie4) document.all[id].style.visibility = "visible"
      }

      function hide(id) {
       if (ns4) document.layers[id].visibility = "hide"
       else if (ie4) document.all[id].style.visibility = "hidden"
      }

      nun ist meine frage, wie bin ich die andere anweisung für die neuen netscapes ein!???

      meine idee war ja:

      else if (others) document.getElementById[id].style.visibility = "visible"

      oder eben

      else if (others) document.getElementById[id].style.visibility = "hidden"

      aber das funktioniert nicht. und das regt mich gerade voll auf!!!

      1. Hi,

        var others = (document.getElementById)? true:false

        ich würde die Variable "dom" nennen, denn genau darum geht's. "others" ist schon allein deswegen falsch, weil z.B. IE 3 unter keine der Rubriken fällt.

        if (ns4) document.layers[id].visibility = "show"
        else if (ie4) document.all[id].style.visibility = "visible"

        if (dom) { ... }
        else if (ns4) { ... }
        else if (ie4) { ... }

        Gib DOM immer Priorität.

        nun ist meine frage, wie bin ich die andere anweisung für die neuen netscapes ein!???

        Beschäftige Dich im JavaScript-Kapitel mit DOM. Es ist ein von document.all und document.layers vollkommen verschiedener Ansatz, der neu erlernt werden muss.

        else if (others) document.getElementById[id].style.visibility = "visible"

        document.getElementById() ist eine Methode, kein Array.

        aber das funktioniert nicht.

        "Funktioniert nicht" funktioniert nicht. Fehlerbeschreibung, bitte; also u.a. Fehlermeldung und Deine Analyse.

        und das regt mich gerade voll auf!!!

        Don't panic. Es ist einfach nur anders, genau wie document.all anders als document.layers ist.

        Cheatah

        --
        X-Will-Answer-Email: No
        1. hi Cheatah,

          thx, läuft.

          hasta