Stefan: Probleme mit importNode/replaceChild und XMLHttpRequest im IE

Beitrag lesen

Hallo Jürgen,

versuch es mal mit responseText und innerHTML.

Danke für den Tipp mit innerHTML, es klappt jetzt mit outerHTML:

var xmlHttp = null;
function dynstart()
{
 if (typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
 }
 if (!xmlHttp) {
  try {
   xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
  } catch(e) {
   try {
    xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
   } catch(e) {
    xmlHttp  = null;
   }
  }
 }
 if (!xmlHttp) return;
 var menulinks = document.getElementById("menu").getElementsByTagName("a");
 for (var i=0; i<menulinks.length; i++) {
  if (navigator.appName=="Microsoft Internet Explorer") menulinks[i].setAttribute("href", "javascript:openurl('"+menulinks[i].getAttribute("href")+"');");
  else menulinks[i].setAttribute("onclick", "openurl('"+menulinks[i].getAttribute("href")+"'); return false;");
 }
}
function openurl(url)
{
 xmlHttp.open('GET', url, true);
 xmlHttp.setRequestHeader("Accept", "text/xml");
 xmlHttp.onreadystatechange =
  function () {
   if (xmlHttp.readyState == 4) {
    var body = document.getElementsByTagName("body")[0];
    if (navigator.appName=="Microsoft Internet Explorer") {
     var nnode = xmlHttp.responseXML.selectSingleNode("//div[@id='main']");
     document.getElementById("main").outerHTML = nnode.xml;
     nnode = xmlHttp.responseXML.selectSingleNode("//div[@id='boxes_right']");
     document.getElementById("boxes_right").outerHTML = nnode.xml;
    }
    else {
     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);
}

Erfolgreich getestet mit Firefox 2, IE 6 und 7, Opera 9, Epiphany (Gecko 1.8.0), Konqueror 3.5, Safari (auf Windows).
Opera 8 führt den Code richtig aus, rendert aber die neuen Elemente fehlerhaft (Hintergrund gibts nur hinter Text, sonst nicht).

Viele Grüße,
Stefan