Stefan: Probleme mit importNode/replaceChild und XMLHttpRequest im IE

Beitrag lesen

Hallo,

da ich in den Kopf einer Homepage einen kleinen Musik-Player einbauen möchte (Flash/Java), soll beim anklicken einer anderen Seite nun nicht alles neu geladen werden, sondern nur die Elemente mit dem Inhalt ausgewechselt werden.
Ich habe noch nie mit AJAX (XMLHttpRequest) gearbeitet (generell wenig mit JavaScript), aber dachte ich mir hier wäre es mal wirklich sinnvoll.

Ich habe es mir kurz angeschaut und in ungefähr einer halben Stunde habe ich folgenden in Firefox und Opera funktionierenden Code gebastelt:

var xmlHttp = null;
function dynstart()
{
 if(navigator.appName=="Microsoft Internet Explorer") {
  return;
 }
 if (typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
 }
 else return;
 if(xmlHttp == null) return;
 var menulinks = document.getElementById("menu").getElementsByTagName("a");
 for(var i=0; i<menulinks.length; i++) {
  menulinks[i].setAttribute("onclick", "openurl('"+menulinks[i].getAttribute("href")+"'); return false;");
 }
}
function openurl(url)
{
 xmlHttp.open('GET', url, true);
 xmlHttp.onreadystatechange =
  function () {
   if (xmlHttp.readyState == 4) {
    var body = document.getElementsByTagName("body")[0];
    var nnode = xmlHttp.responseXML.getElementById("main");
    body.replaceChild(document.importNode(nnode, true), document.getElementById("main"));
    nnode = xmlHttp.responseXML.getElementById("boxes_right");
    body.replaceChild(document.importNode(nnode, true), document.getElementById("boxes_right"));
   }
  };
 xmlHttp.send(null);
}

Der Code läuft einwandfrei in Opera 9 und Firefox 2, die Funktion dynstart(), die über onload vom body-element aufgerufen wird, fügt im Menü allen Links ein onclick-Attribut zur Funktion openurl(url) hinzu, welche einfach mit XMLHttpRequest die aufzurufende Seite lädt und dann zwei div-Elemente der alten durch die der neuen Seite ersetzt.

Ich habe dann über 2 Stunden gebastelt das im IE hinzukriegen, erfolglos. Andauernd kannte er Funktionen nicht (replaceChild, importNode) und ich habe keine Idee wie ich das hinkriegen soll.

Kann mir da jemand weiterhelfen?

Viele Grüße,
Stefan