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...