Cybie: Opera Bug bei DOM-Manipulation

Hi und Tag alle mit einander!
Ich bin auf folgendes Problem gestoßen, dass Opera(9.21) unter bestimmten Bedingungen nicht korrekt die Anzeige aktualisiert, wenn ich mittels JavaScript das Dokument verändere.
Dieser Bug (ich denke es ist einer) tritt auf, wenn man einen DIV hat, der absolute positioniert ist und top und left angeben sind und width und height per CSS prozentual festgelegt sind und darin jetzt einen weiteren DIV anlegt, dessen .innerHTML jetzt per JavaScript ausgetauscht wird.
Quelltext dazu:

<html>
<head>
 <style type="text/css">
#d1 {
 position:absolute;
 top:110px;
 left:80px;
 width:50%;
 height:90%;}
 </style>
 <script type="text/javascript">
<!--
window.onload=function() {
 with(document.getElementById('d1')) { // Lösung Nr.2
  //style.height=offsetHeight;
  //style.width=offsetWidth;
 }
 content=document.getElementById('d2');
// content.style.color='red'; // Lösung Nr.2
// content.firstChild.firstChild.firstChild.nodeValue='Noch was Neues';
// content.firstChild.firstChild.nodeValue='Noch was Neues';
 content.innerHTML='<h1>Andere Seite</h1>Viel Neuer Text, bla, bla<br />Viel Neuer Text, bla, bla<br />Viel Neuer Text, bla, bla<br />Viel Neuer Text, bla, bla<br />';
// content.style.color='';
}
-->
 </script>
</head>
<body>
 <div id="d1"><div id="d2"><h1>Willkommen auf meiner kleinen Seite</h1>
  Freut mich dich hier zu sehen|<br />
  bla bla bla <br />
  Freut mich dich hier zu sehen||<br />
  bla bla bla <br />
  Freut mich dich hier zu sehen|||<br />
  bla bla bla <br />
  Freut mich dich hier zu sehen||||
 </div></div>
</body>
</html>

Folgende Möglichkeiten sind mir bisher aufgefallen diesen Fehler zu umgehen:

  • Schriftfarbe ändern und nach der Veränderung wieder zurück setzten, klappt aber leider nicht bei größeren Dateien (wo genau die Schallmauer ist hab ich noch nicht herausgefunden)
  • Die relativen Größen aus CSS mit JavaScript durch Pixelangaben ersetzen. Das Problem dabei ist, dass man ein onrize für die Generierung der neuen 'relativen' Werte schreiben muss.

Erstmal danke das ihr den ganzen Text durchgelesen habt ;)

Meine Frage ist nun: Gibt es auch eine einfachere/elegantere Variante dieses Problem zu umschiffen?

PS: Ich hoffe dieses Thema gab es bisher noch nicht, denn sonst hätte ich es wohl per Google finden müssen...

  1. Hallo,

    Meine Frage ist nun: Gibt es auch eine einfachere/elegantere Variante dieses Problem zu umschiffen?

    Probier mal dieses Verfahren aus:

    Modifying an invisible element

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. Danke!
      Funzt! Aber nur wenn ich d1 aus- und einblende. Wenn ich d2 mit style.display weg machen, dann die Veränderungen vornehme und danach wieder auf sichbar schalte geht es nicht (?)

      Cybie

  2. Quelltext dazu:

    Also bei mir klappt das Tadellos im OP 9.21, allerdings nicht im Quirksmode, wie dein Beispiel, sondern nur im Standardmode.

    Struppi.

    1. Also bei mir klappt das Tadellos im OP 9.21, allerdings nicht im Quirksmode, wie dein Beispiel, sondern nur im Standardmode.

      Kommando zurück, nur beim ersten Mal hat es geklappt.

      Struppi.