2009-10-21 5 views
5

Microsoft a finalement ajouté l'objet XMLHttpRequest natif dans Internet Explorer 7, mais j'ai découvert qu'il peut être désactivé dans la boîte de dialogue Options Internet. Alors, quel avantage y a-t-il à utiliser XMLHttpRequest() vs ActiveXObject ("Microsoft.XMLHTTP")?XMLHttpRequest() vs ActiveXObject ("Microsoft.XMLHTTP") - à quoi bon?

Si elle peut être désactivée, cela signifie que nous devons garder les vérifications de compatibilité de notre navigateur pour toujours, n'est-ce pas? XMLHttpRequest() initialiserait-il plus rapidement que ActiveXObject ("Microsoft.XMLHTTP") ou quoi? Pourquoi Microsoft l'ajouterait-il et le rendrait-il optionnel?

+0

peut être pour la compatibilité pour les pages spécifiques de Firefox? – Xinus

+0

@Rubens Farias, c'est censé être. Je travaille uniquement avec IE7 + (pas d'autres navigateurs) donc je veux vraiment savoir si je devrais même vérifier XMLHttpRequest ou juste aller directement pour ActiveXObject() –

+0

Si vous travaillez uniquement avec IE7 +, vous pouvez travailler directement avec XmlHttpRequest, juste attraper l'exception de sécurité dans un essai/catch, ce qui signifie qu'il est directement ou indirectement désactivé. Si vous choisissez l'approche ActiveX, sachez que l'implémentation interne est assez différente (incompatible avec le DOM chargé, besoin de convertir vers/depuis) ​​et plus lente et que l'ActiveX est souvent désactivé. – Abel

Répondre

5

L'ActiveXObject peut également être désactivé. Notez que les autres navigateurs peuvent également désactiver ce paramètre et d'autres. Il ne s'agit pas de la compatibilité du navigateur, mais de la préférence de l'utilisateur. Les utilisateurs peuvent autoriser/interdire les requêtes interdomaines, autoriser/interdire les scripts, autoriser Flash ou non, etc.

Vous devrez toujours vérifier si votre page fonctionne toujours correctement (ou si elle retombe gracieusement) lorsque les utilisateurs ont désactivé les fonctionnalités de certains navigateurs dont vous avez besoin. Les bonnes nouvelles sont: il est activé par défaut, la plupart des utilisateurs l'auront sur.

Mise à jour: par défaut, les scripts et les demandes externes (à savoir document(), xsl:include avec des entités XSLT ou externes en XML) ne sont pas pris en charge par XmlHttpRequest objets -retrieved et doit être activé explicitement. Ceci est différent des navigateurs non-IE, où les demandes externes des documents XHR sont autorisées (ou n'existent pas, comme dans Safari et Chrome).

+1

'Les bonnes nouvelles sont: il est activé par défaut, la plupart des utilisateurs l'auront sur.» - Voilà pourquoi j'ai posé la question, j'ai découvert un de mes utilisateurs ne l'avait pas allumé et il provoquait l'application à échouer. Je n'avais même pas réalisé que ça pouvait être désactivé jusque-là. –

2

Ceci est une supposition, mais je suppose qu'ils permettent qu'il soit désactivé pour la même raison qu'ils permettent de désactiver JavaScript. Certaines personnes croient que les risques (protection de la vie privée, sécurité, etc.) l'emportent sur les avantages et, partant, le désavantagent.

+0

Je pourrais le comprendre, s'il était désactivé avec ActiveXObject. Mais vous pouvez réellement désactiver XMLHttpRequest et toujours utiliser ActiveXObject ("Microsoft.XMLHttpRequest"). –

Questions connexes