[FONT=-moz-fixed]Hallo Forum,
habe eine Frage bezüglich der Funktion XMLHttpRequest.
Ich versuche mit JS gewisse Teile der Seite nachzuladen, allerdings scheint mein Ansatz nicht browserübergreifend zu funktionieren, nur ab Firefox 3.6, was natürlich schlecht ist.
Bis jetzt habe ich leider nicht feststellen können, was exakt das Problem ist.
Hier ist die Seite auf der das ganze zu sehen ist:
[/FONT]http://www.felix-moeller.net/neu/
[FONT=-moz-fixed]
Und der entsprechende Codeschnipsel:
( [/FONT] http://www.felix-moeller.net/neu/js/common.js [FONT=-moz-fixed] )
[CODE]
var req = null;
try{
req = new XMLHttpRequest();
} catch (ms){
try{
req = new ActiveXObject(„Msxml2.XMLHTTP“);
} catch (nonms){
try{
req = new ActiveXObject(„Microsoft.XMLHTTP“);
} catch (failed){
req = null;
}
}
}
if (req == null)
alert('Error creating request object!');
var uri = '[http://www.felix-moeller.net/neu/load/'+(n-1)+','+language](http://www.felix-moeller.net/neu/load/%27+%28n-1%29+%27,%27+language);
//if(params!=undefined) uri += "?"+params;
//alert("open "+uri);
req.open("POST", uri, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
if(params!=undefined) req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
/*if (isFF35()){
req.onload = req.onerror = req.onabort = function(){
document.getElementById('col'+n+'b').innerHTML = req.responseText;
hideLoader(n);
openMenu(cat, subcat);
};
} else {*/
req.onreadystatechange = function(){
switch(req.readyState) {
case 4:
if(params == undefined) {
var regex = /<img.*src="([a-zA-Z:/._-]*)">/;
var m = regex.exec(req.responseText);
if (m == null) {
document.getElementById('col'+n+'b').innerHTML = req.responseText;
hideLoader(n);
openMenu(cat/*, subcat*/);
} else {
var s = new Array();
for (i = 1; i < m.length; i++) {
if (m[i]!='')
s.push(m[i]);
}
Preloader.add(s);
Preloader.onFinish(function(){
document.getElementById('col'+n+'b').innerHTML = req.responseText;
hideLoader(n);
openMenu(cat/*, subcat*/);
});
Preloader.load();
}
} else {
switch (req.responseText) {
case 'sent_true':
// WIN
//if (document.getElementById('box_success').style.display == 'none') {
new Effect.BlindUp('input_form', { duration: 0.5 });
new Effect.BlindDown('box_success', { duration: 0.5, queue: 'end' });
/*} else {
new Effect.BlindUp('box_success', { duration: 0.5 });
}*/
break;
case 'sent_false':
formEnable();
new Effect.BlindDown('box_warning', { duration: 0.3 });
break;
case 'sent_already':
formEnable();
new Effect.BlindDown('box_warning_already', { duration: 0.3 });
break;
default:
alert('error! '+req.responseText);
break;
}
}
break;
default:
return false;
break;
}
};
//}
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if(params==undefined)
req.send(null);
else
req.send(params);
[/CODE]Wie im Code zu sehen ist, habe ich eine Browserweiche für FF3.5 gehabt, allerdings erschien sie mir überflüssig, da es auch ohne funktioniert.
Wie kann man den Code optimieren, damit er browserübergreifend funktioniert?
Vielen Dank für jede Hilfe
Wäre auch für jede andere Kritik dankbar.
[/FONT]