Reny: Document all für IE & NS - Alternative?

Hi zusammen

Kann mir evtl jemand helfen und sagen, ob's im JS eine Möglichkeit gibt, dass IE und NS ein "if (document.all || document.getXXXId)" gleich interpretieren?

Document.all wird ja nicht von NS interpretiert und document.layers nicht von IE.

Danke für eure Infos.
Gruss

  1. Hi,

    ich hab mal n CrossDOM-Script geschrieben, vielleicht hilft es Dir weiter:

    var idDOM=0;
    var allDOM=0;
    var layDOM=0;
    var DHTML=0;

    if (document.getElementByID) {
      idDOM=1;
      DHTML=1;
    } else {
      if (document.all) {
        allDOM=1;
        DHTML=1;
      } else {
        browserVersion=parseInt(navigator.app-Version);
        if ((navigator.appName.indexOf('Netscape')!=1) && (browserVersion==4)) {
          layDOM=1;
          DHTML=1;
        }
      }
    }

    function crossDOM(Stil,ObjID) {
      if (idDOM) {
        if (Stil==1) {
          return (document.getElementByID(ObjID).style);
        } else {
          return (document.getElementByID(ObjID));
        }
      }
      if (allDOM) {
        if (Stil==1) {
          return (document.all[ObjID].style);
        } else {
          return (document.all[ObjID]);
        }
      } else {
        if (layDOM) {
          return (document.layers[ObjID]);
        }
      }
    }

    Aufrufen tust Du es mit dom=crossDOM(0,ObjID)

    Gruß

    Ralf

    1. Aufrufen tust Du es mit dom=crossDOM(0,ObjID)

      Naja, letzlich ist es besser, die Eigenschaften zu prüfen, die man möchte und nicht extra dafür Variabeln zu verwenden, zumal der Browsername ja sowieso nichts übner die Eigenschaft des Browser aussagt.

      Also alles einfach so:

      function crossDOM(id, style) {
       var obj = null;
       if(!id) return obj;

      if (document.getElementById) obj = document.getElementByID(id);
       else if (document.all) obj = document.all[id];
       else if(document.layers) document.layers[id];

      if(obj && style)
       {
          if(document.layers) return obj;
          return obj.style;
       }
       return obj;
      }

      ich hab den Parameter vertauscht, weil id immer nötig ist und 'stil' kann man ja auch weglassen, in deiner Version muss man immer einen Wert für 'stil' angeben.

      Struppi.