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