masklinn a écrit :
Ca n'a rien à voir avec un ActiveX, si c'en était un les services faisant appel à XhlHttpRequest ne fonctionneraient que sous MSIE ce qui n'est pas le cas
|
Pour votre info, Microsoft a implémenté le premier l'objet XMLHttpRequest dans IE5 en tant qu'un objet ActiveX. Ensuite les ingénieurs du "Mozilla Project" ont implémentés une version native compatible pour Mozilla 1.0 (et Netscape 7). Apple a fait la même chose avec Safari 1.2
Résultat, dans Mozilla ou Safari, on peut créer l'objet en natif en utilisant le code suivant:
Code :
- var req = new XMLHttpRequest();
|
Pour IE, il faut utiliser le nom de l'objet avec le constructeur ActiveX:
Code :
- var req = new ActiveXObject("Microsoft.XMLHTTP" );
|
ou
Code :
- var req = XmlHttp.create()
|
qui fait la même chose
Du coup, pour être compatible avec tous les browser, la création de l'objet dans une page doit en tenir compte et ça donne un code dans ce style là :
Code :
- try {
- var xmlhttp = new XMLHttpRequest(); // Si !IE
- } catch (e) {
- var MSXML_XMLHTTP_PROGIDS = new Array(
- 'MSXML2.XMLHTTP.5.0',
- 'MSXML2.XMLHTTP.4.0',
- 'MSXML2.XMLHTTP.3.0',
- 'MSXML2.XMLHTTP',
- 'Microsoft.XMLHTTP'
- );
- var xmlhttp = null;
- var success = false;
- for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) {
- try {
- xmlhttp = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]); // pour IE
- success = true;
- } catch (e) {}
- }
- }
|
Message édité par Sonoix le 17-03-2005 à 12:49:12