Posted: 02.02.2006 00:09 Post subject: AJAX problem i opera
Koristim ovu jednostavnu skriptu za neke stvari na svom sajtu:
Code:
var page = '';
var element = '';
function loading(e){
element = e;
document.getElementById(element).innerHTML = 'pričekajte trenutak...';
}
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
Ne radi ti zato kaj snifaš browser, umjesto da detektiraš podršku za metodu, kako se to normalno i radi. (op.a. dostupnost novih tehnologija dopušta svatkome da se bavi stvarima bez osnovnog predznanja).
Opera se po defaultu predstavlja kao IE, ali ne podržava ActiveXObject, prema tome tvoja varijabla http ostaje 'undefined'. Također, po defaultu, varijabla ro ako ne prođe, returnat će ti 'undefined', što je dost nezgodna vrijednost.
Ovo bi trebalo raditi:
Code:
var http = function() {
var ro = null; /* s ovim si ziher da će ti returnat null ako ne prođe niti jedan uvjet */
if (window.XMLHttpRequest) {
ro = new XMLHttpRequest();
} else if(window.ActiveXObject) {
var msp = new Array('Msxml2.XMLHTTP','Microsoft.XMLHTTP');
for (var i = 0; i < msp.length; i = i + 1) {
try { ro = new ActiveXObject(msp[i]); } catch (e) {};
};
};
return ro;
};
a također i dio:
Code:
function sndReq(action, p) {
http.open('get', p + '?action=' + action, true); /* iako je po defaultu true, hoće zahengat, ako se explicitno ne pošalje i taj argument */
http.onreadystatechange = handleResponse;
http.send(null);
};
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum