Opera und innerHTML
Christian L.
- javascript
Hallo,
ich bin bei Opera 7.11-7.20 (andere Versionen habe ich nicht getestet) auf folgendes Problem gestoßen:
Beim Auslesen mit innerHTML per JavaScript ändert Opera automatisch in HTML-Tags bei den Attributen doppelte Anführungszeichen (") in einfache Anführungszeichen (').
Wenn z.B. ein Link mit onClick="window.open('test.html','test','')" vorkommt und ich diesen z.B. per window.document.body.innerHTML ausgelesenen HTML-Code in ein DIV schreibe, dann funktioniert der onClick danach nicht mehr!
Die Lösung, die ich benutze ist ein simples Vertauschen der Anführungszeichen, also onClick='window.open("test.html","test","")', was zum Glück bei den von mir getesteten Browsern (IE6, NS4-7) auch funktioniert.
Ist dieses Problem bekannt?
Ist die oben genannte Schreibweise HTML-Konform?
Gibt es andere Lösungen?
Anregungen sind erwünscht. Das unten gezeigte Beispiel dient lediglich dazu, das Problem auch gleich allen zugänglich zu machen, es funktioniert nicht im NS4 und die Seiten, in denen ich auf dieses Problem gestoßen bin sich viel zu komplex, um sie hier darzustellen. Also bitte meinen Code dort unten nicht zerreden.
Hier ein Beispiel-Code zum selber testen:
---------- schnipp ---------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test</title>
<script language="JavaScript" type="text/JavaScript">
function start() {
alert(Quelle.innerHTML);
Ziel.innerHTML = "Kopie:<br>"+Quelle.innerHTML;
}
</script>
</head>
<body onLoad="start();">
Original:<br>
<div id="Quelle">
<a href="test.htm" onClick='window.open(this.href,"popup","width=300,height=150,scrollbars=no");return false;'>Funktioniert (')</a><br>
<a href="test.htm" onClick="window.open(this.href,'popup','width=300,height=150,scrollbars=no');return false;">Geht nicht (")</a>
</div>
<div id="Ziel" style="position:absolute; left:128px; top:52px; z-index:1"></div>
</body>
</html>
---------- schnapp ---------------------------
Tschüß
Christian