Macavity: IE Hack für absolute Positionierung?

Hallo,
Kennt jemand einen IE-Hack dür absolute Positonierung. Die wird in Firefox und IE unterschiedlich dargestellt, was natürlich mein ganzes Layout über den Haufen wirft. Ich möchte mit übereinandergelagerten Layern arbeiten, die per Klick "visibile" oder "hidden" immer an der selben stelle erscheinen sollen.
Danke für Tipps.
Mac

  1. Hallo Macavity,

    Kennt jemand einen IE-Hack dür absolute Positonierung. Die wird in Firefox und IE unterschiedlich dargestellt, was natürlich mein ganzes Layout über den Haufen wirft. Ich möchte mit übereinandergelagerten Layern arbeiten, die per Klick "visibile" oder "hidden" immer an der selben stelle erscheinen sollen.

    Hast du es mal mit

      
    deinElement.style.dsplay = 'none';  
    
    ~~~bzw.  
    ~~~javascript
      
    deinElement.style.dsplay = '';  
    
    

    versucht?

    Gibt es Vorfahrenselemente deiner dynamischen, absolut positionierten Elemente, die du möglicherweise auch über float oder position aus dem Fluss genommen hast?

    Genaueres kann man über die Ursachen solcher Darstellungsunterschiede nur sagen, wenn du den relevanten Code zeigst, ich glaube aber nicht, dass es mit Unterschieden der Browser bei der absoluten Positionierung selbst zu tun hat.

    Gruß Gernot

    1. Hallo Gernot

      Hast du es mal mit

      deinElement.style.dsplay = 'none';

      
      > ~~~javascript
        
      
      > deinElement.style.dsplay = '';  
      > 
      
      

      versucht?

      Es funtioniert bei mir einwandfrei mit:
      document.getElementById("BSZ1").style.visibility = "visible";
      document.getElementById("BSZ2").style.visibility = "hidden";

      document.getElementById("BSZ2").style.visibility = "visible";
      document.getElementById("BSZ1").style.visibility = "hidden";
      etc.

      Das Problem ist die exakte Positionierung der Layers <div id="BSZ1"> etc (siehe unten). Ich habe mehrere derartige Layers übereinandergelagert und es soll immer nur eines per radiobutton sichtbar geschaltet werden. Die Layers sind über CSS mit absoluter Positionierung plaziert. Die Position wird jedoch leider in den Browsern unterschiedlich angezeigt.
      Das Layer sieht so aus:

      <div id="BSZ1">
      Text BSZ1
      </div>
      <div id="BSZ2">
      Text BSZ2
      </div>
      etc.

      Gibt es Vorfahrenselemente deiner dynamischen, absolut positionierten Elemente, die du möglicherweise auch über float oder position aus dem Fluss genommen hast?

      Nein es gibt keine vorangehenden "float" Elemente.

      Genaueres kann man über die Ursachen solcher Darstellungsunterschiede nur sagen, wenn du den relevanten Code zeigst, ich glaube aber nicht, dass es mit Unterschieden der Browser bei der absoluten Positionierung selbst zu tun hat.

      Gruß Gernot

      1. Das Problem ist die exakte Positionierung der Layers <div id="BSZ1"> etc (siehe unten). Ich habe mehrere derartige Layers übereinandergelagert und es soll immer nur eines per radiobutton sichtbar geschaltet werden. Die Layers sind über CSS mit absoluter Positionierung plaziert. Die Position wird jedoch leider in den Browsern unterschiedlich angezeigt.
        Das Layer sieht so aus:

        <div id="BSZ1">
        Text BSZ1
        </div>
        <div id="BSZ2">
        Text BSZ2
        </div>
        etc.

        Kann ich nicht nachvollziehen, bei mir sind die Bereiche Exakt an den gleichne Postionen.

        <style type="text/css">  
        .hide  
        {  
            position:absolute;  
            display:none;  
            border:1px solid black;  
        }  
        </style>  
        
        
        <form action="#" name="form">  
        <p>  
        BSZ1: <input type="checkbox" value="BSZ1" onclick="show(this)">  
        <br>  
        BSZ2: <input type="checkbox" value="BSZ2" onclick="show(this)">  
        </p>  
        <p id="BSZ1" class="hide">Text BSZ1</p>  
        <p id="BSZ2" class="hide">Text BSZ2</p>  
          
        </form>  
        
        

        <script type="text/JavaScript">

        function show(el)  
        {  
            if(!document.getElementById || !el) return;  
          
            var obj = document.getElementById(el.value);  
            if(obj) obj.style.display = el.checked ? 'block' : 'none';  
        }  
        
        

        </script>

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Das Layer sieht so aus:

          <div id="BSZ1">
          Text BSZ1
          </div>
          <div id="BSZ2">
          Text BSZ2
          </div>
          etc.

          Kann ich nicht nachvollziehen, bei mir sind die Bereiche Exakt an den gleichne Postionen.

          Ich glaube jetzt weiss ich wo der hase im Pfeffer liegt. Was ich als Text BSZ1, Text BSZ2 bezeichnet habe sind de facto Tabellenzeilen mit mehreren radio inputs, die aus einem array ausgelesen werden.

          Ich habe das Ganze jetzt umgeschmissen und versuche es mit <ilayer> wie folgt (jetzt stimmt wenigstens die Position):
          <ilayer name="BSZR" visiblity ="hide">
          <table>
          <tr><td width="100" align="right" nowrap="nowrap"><font size="2"><strong>gew&uuml;nschte<br />Art:</strong></font></td>
            <?php  for ($i=0; $i<=count($art[0])-1; $i++) {?>
            <td width="65"><div align="center"><font size="1">
              <input type="radio" name="art" value="<?php echo $art[0][0]; ?>" />
              <br /><?php echo $art[0][0]; ?></font></div></td><?php } ?>
          </tr></table>
          </ilayer>

          <ilayer name="BSZS" visibility="hide">
          <table>
          <tr><td width="100" align="right" nowrap="nowrap"><font size="2"><strong>gew&uuml;nschte<br />Art:</strong></font></td>
            <?php  for ($i=0; $i<=count($art[1])-1; $i++) {?>
            <td width="65"><div align="center"><font size="1">
              <input type="radio" name="art" value="<?php echo $art[1][1]; ?>" />
              <br /><?php echo $art[1][1]; ?></font></div></td><?php } ?>
          </tr></table>
          </ilayer>

          Komischerweise werden die <ilayer> trotz des Zusatzes <visibility="hide"> angezeigt.

          Ich versuche sie dann durch folgende Funktionen ein/auszuschalten:
          function bszr(){
          window.document.BSZR.visibility = "show";
          window.document.BSZS.visibility = "hide";
          }
          function bszs(){
          window.document.BSZR.visibility = "hide";
          window.document.BSZS.visibility = "show";
          }

          1. Ich habe das Ganze jetzt umgeschmissen und versuche es mit <ilayer> wie folgt (jetzt stimmt wenigstens die Position):

            Weißt du was du tust?
            http://de.selfhtml.org/html/layer/definieren.htm#inline_layer

            Struppi.

            --
            Javascript ist toll (Perl auch!)
            1. Ich habe das Ganze jetzt umgeschmissen und versuche es mit <ilayer> wie folgt (jetzt stimmt wenigstens die Position):

              Weißt du was du tust?

              Du hast recht. Ich hab's auch gemerkt ich kieg die ilayers nicht übereinander. Hast Du eine Ahnung wie ich mehrere Tabellenzeilen übereinander legen und ein/ausblenden kann sodass sie immer an der gleichen Stelle erscheinen?

              1. Weißt du was du tust?
                Du hast recht. Ich hab's auch gemerkt ich kieg die ilayers nicht übereinander. Hast Du eine Ahnung wie ich mehrere Tabellenzeilen übereinander legen und ein/ausblenden kann sodass sie immer an der gleichen Stelle erscheinen?

                Mit einer Tablle geht das nicht, warum willst du tabellarische Daten übereinander legen oder andersherum, bist du sicher das du eine Tabelle brauchst?

                Hast du den Link gelesen?
                ilayer ist aus der steinzeit des Internets und eigentlich kannte nur Netscape 4 diesen Tag, wo hast du den Ausgegraben?

                Struppi.

                --
                Javascript ist toll (Perl auch!)
                1. Mit einer Tablle geht das nicht, warum willst du tabellarische Daten übereinander legen oder andersherum, bist du sicher das du eine Tabelle brauchst?

                  Ich denke schon. Es sollen meherere radiobuttons nebeneinander erscheinen und unter jedem Radiobutton die Beschreibung.
                  Bei mir sieht eine Zeile so aus:
                  <table>
                  <tr valign="baseline">
                  <td width="100" align="right" nowrap="nowrap"><font size="2"><strong>gew&uuml;nschte<br />Art:</strong></font></td>
                  <?php  for ($i=0; $i<=count($art[$w])-1; $i++) {?>
                  <td width="65"><div align="center"><font size="1">
                  <input type="radio" name="Art" value="<?php echo $art[$w][$i]; ?>" />
                  // Beschreibung des jeweiligen Buttons:
                  <br /><?php echo $art[$w][$i]; ?></font></div></td><?php } ?>
                     </tr>
                  </table>

                  Und diese Tabellen ändern sich je nach zuvor angeklicktem Radiobutton z.B. in
                  <table>
                  <tr valign="baseline">
                  <td width="100" align="right" nowrap="nowrap"><font size="2"><strong>gew&uuml;nschte<br />Art:</strong></font></td>
                  <?php  for ($i=0; $i<=count($art[xy])-1; $i++) {?>
                  <td width="65"><div align="center"><font size="1">
                  <input type="radio" name="Art" value="<?php echo $art[xy][$i]; ?>" />
                  // Beschreibung des jeweiligen Buttons:
                  <br /><?php echo $art[xy][$i]; ?></font></div></td><?php } ?>
                     </tr>
                  </table>

                  Un nun soll eben entweder die eine Reihe von Radiobuttons oder die andere AN DER GLEICHEN STELLE sichtbar sein.

                  Hast du den Link gelesen?
                  ilayer ist aus der steinzeit des Internets und eigentlich kannte nur Netscape 4 diesen Tag, wo hast du den Ausgegraben?

                  Naja den habe ich in irgendeinem Forum gelesen. Dort wollte auch jemand Tabelleninhalte verbergen.

                  Wäre dir sehr dankbar für einen Tipp.
                  Mac

                  1. Ich denke schon. Es sollen meherere radiobuttons nebeneinander erscheinen und unter jedem Radiobutton die Beschreibung.
                    Bei mir sieht eine Zeile so aus:

                    PHP Code ist für ein JS nicht relevant.

                    Wie gesagt einzelene Tabellenzellen kannst du nicht x-beliebig postionieren, allerdings kannst du die Tabellen positionieren.

                    Un nun soll eben entweder die eine Reihe von Radiobuttons oder die andere AN DER GLEICHEN STELLE sichtbar sein.

                    Enfach die Tabellen an die gleiche Stelle positionieren. Das ist kein Problem.

                    Hast du den Link gelesen?
                    ilayer ist aus der steinzeit des Internets und eigentlich kannte nur Netscape 4 diesen Tag, wo hast du den Ausgegraben?

                    Naja den habe ich in irgendeinem Forum gelesen. Dort wollte auch jemand Tabelleninhalte verbergen.

                    Ein Forum von 1998?

                    Struppi.

                    --
                    Javascript ist toll (Perl auch!)
                    1. Danke Struppi!!
                      Endlich hab ich's geschnallt. Die Tabelle setzt er jetzt mit absoluter Positionierung immer an die richtige Stelle und das ein und ausschalten der <div> layers (NICHT der <ilayers> ) mittels javascript funktion klappt auch.
                      Mac!

                      1. Endlich hab ich's geschnallt. Die Tabelle setzt er jetzt mit absoluter Positionierung immer an die richtige Stelle und das ein und ausschalten der <div> layers (NICHT der <ilayers> ) mittels javascript funktion klappt auch.

                        Du kannst problemlos auch Tabellen ein und ausblenden.

                        Struppi.

                        --
                        Javascript ist toll (Perl auch!)
      2. Hallo Macavity!

        Das Layer sieht so aus:

        <div id="BSZ1">
        Text BSZ1
        </div>
        <div id="BSZ2">
        Text BSZ2
        </div>
        etc.

        <glaskugelmodus>

        Decken sich diese oben beschriebenen Elemente eventuell nicht mit einem Hintergrundbild oder anderem Element der Seite? Ich vermute, dass Du die Position dieser Elemente zu einem darunter liegenden meinst? Dann solltest Du dieses auch absolut positionieren und nicht im Fluss des Dokumentes lassen. Alles kann man aber nur, wie Gernot schon schrieb nur erraten, ohne dass Du uns den gesamte _relevanten_ Code entweder verlinkst, oder hier anzeigst.

        </glaskugelmodus>

        Schönen Gruß

        Afra