Axel Richter: outerHTML - Ersatz für Netscape

Beitrag lesen

Hallo,

Da liest man z.B. so etwas:

if(navigator.appName=="Netscape")
  with(document.ticker.document)
  {
   open(); write(out); close();
  }
 else
  ticker.innerHTML=out;

pos+=dir;

Nun geht es hier wohl mit document.write() um einen Ersatz für innerHTML,

Ja, aber nur für Netscape < Version 6. Die Gecko-Netscapes kennen das Konzept des Dokuments im Layer nicht mehr. Ein Ersatz für .innerHTML könnte wie folgt aussehen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>InnerHML-Ersatz</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<div id="hierInnerHTML" name="hierInnerHTML" style="position:relative;">&nbsp;</div>
<script type="text/javascript">
<!--
if (document.all) {
  document.all["hierInnerHTML"].innerHTML = "<h1>Hallo Welt, mit .all</h1>"
} else if (document.layers) {
  document.layers["hierInnerHTML"].document.write("<h1>Hallo Welt, mit .layers</h1>");
} else if (window.opera && document.getElementById) {
  document.getElementById("hierInnerHTML").document.write("<h1>Hallo Welt, mit .getElementById und Opera &lt; 7</h1>");
} else if (document.getElementById) {
  var myH1 = document.createElement("H1");
  var myText = document.createTextNode("Hallo Welt, mit DOM");
  myH1.appendChild(myText);
  document.getElementById("hierInnerHTML").replaceChild(myH1,document.getElementById("hierInnerHTML").firstChild);
}
//-->
</script>
</body>
</html>

Leider habe ich keinen NC4.x mehr, kann also nicht testen, ob ich das mit den LAYERs richtig gemacht habe. Wenn nicht, wäre ich für eine Rückmeldung dankbar. Der DOM-Ersatz funktioniert natürlich nur, wenn das Element, auf welches das innerHTML angewendet werden soll, nur einen Kindkonten hat.

aber das geht doch vielleicht auch als Ersatz für outerHTML.

Nein. Der DOM-Ersatz für .outerHTML scheitert an der nicht vorhandenen Methode, einen kompletten Knoten durch einen anderen zu ersetzen, wenn man nicht dessen Elternknoten hat. Man kann nur Kindknoten _in_ einem Knoten ersetzen. Das Ermitteln des Elternknotens eines Kindknotens ist ebenfalls nicht möglich.

viele Grüße

Axel