Cybaer: AJAX: Response und Kompatibilität

Beitrag lesen

Hi,

if(browser == "Microsoft Internet Explorer"){

Sollte man so nicht machen. Der IE7 hat z.B. XMLHttpRequest() auch als natives Objekt (wie z.B. der Mozilla ohnehin) und braucht den Zugriff via ActiveX gar nicht mehr.

Funktioniert das ganze im IE noch wenn man ActiveX deaktiviert hat?

Nein. Schreibe es so:

  
  var result=null;  
  
  if(window.XMLHttpRequest) {  
   // Standard  
   result=new XMLHttpRequest();  
  } else if(window.ActiveXObject) {  
   // IE<7  
   try { result=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { result=false; }  
  } else if(window.createRequest) {  
   // IceBrowser  
   result=window.createRequest();  
  }  

Im Ergebnis ist result dann
1. im Erfolgsfall das Request-Objekt,
2. null, wenn der Browser XMLHttpRequest gar nicht unterstützt, oder
3. false, wenn der Browser (sprich: IE<7) XHR zwar prinzipiell unterstützt, aber ActiveX abgeschaltet ist/der User die Aktion nicht erlaubt hat (Du könntest dann den User ggf. bitten, ActiveX zu aktivieren, bzw. den Zugriff zu erlauben).

Kurz gesagt: if(result) -> OK
             if(!result) -> KO, was man noch unterteilen kann in:
             if(result===null) -> chancenlos
             if(result===false) -> ggf. neuer Versuch

Beachte: Der IceBrowser beherrscht nur einen Auszug der XHR-Methoden/Eigenschaften. Wenn Du ihn nicht explizit unterstützen möchtest, lösche also diesen If-Zweig ...

Gruß, Cybaer

--
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!