Opera Bug bei DOM-Manipulation
Cybie
- javascript
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:
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...
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
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
Quelltext dazu:
Also bei mir klappt das Tadellos im OP 9.21, allerdings nicht im Quirksmode, wie dein Beispiel, sondern nur im Standardmode.
Struppi.
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.