2009-10-21 15 views
5

Microsoft w końcu dodał macierzysty obiekt XMLHttpRequest w programie Internet Explorer 7, ale odkryłem, że można go wyłączyć w oknie dialogowym Opcje internetowe. Jakie korzyści można uzyskać przy użyciu XMLHttpRequest() vs ActiveXObject ("Microsoft.XMLHTTP")?XMLHttpRequest() vs ActiveXObject ("Microsoft.XMLHTTP") - o co ci chodzi?

Jeśli można go wyłączyć, oznacza to, że musimy sprawdzać kompatybilność przeglądarek na zawsze, czyż nie? Czy XMLHttpRequest() zainicjuje szybciej niż ActiveXObject ("Microsoft.XMLHTTP") czy co? Dlaczego Microsoft miałby go dodać i uczynić opcjonalnym?

+0

może być kompatybilny ze stronami w Firefoksie? – Xinus

+0

@Rubens Farias, tak powinno być. Pracuję tylko z IE7 + (nie ma innych przeglądarek), więc naprawdę chcę wiedzieć, czy powinienem jeszcze sprawdzić XMLHttpRequest lub po prostu przejść bezpośrednio do ActiveXObject() –

+0

Jeśli pracujesz tylko z IE7 + możesz pracować bezpośrednio z XmlHttpRequest, po prostu złap wyjątek bezpieczeństwa w try/catch, co oznacza, że ​​jest on bezpośrednio lub pośrednio wyłączony. Jeśli wybierzesz podejście ActiveX, pamiętaj, że implementacja wewnętrzna jest zupełnie inna (niekompatybilna z obciążonym DOM, wymaga konwersji do/z) i wolniejsza oraz że ActiveX jest często wyłączany. – Abel

Odpowiedz

5

Obiekt ActiveXObject można również wyłączyć. Pamiętaj, że inne przeglądarki mogą również wyłączyć to i inne ustawienia. Nie dotyczy to zgodności przeglądarki, ale preferencji użytkownika. Użytkownicy mogą zezwalać/nie zezwalać na żądania w wielu domenach, mogą zezwalać/nie zezwalać na skrypty, mogą zezwalać na flashowanie itp.

Zawsze będziesz musiał sprawdzić, czy twoja strona wciąż działa płynnie (lub z wdziękiem) po wyłączeniu przez użytkowników niektóre funkcje przeglądarki, których potrzebujesz.

Dobrą wiadomością jest to, że jest włączona domyślnie, większość użytkowników będzie ją mieć.

Aktualizacja: domyślnie, skryptów i wniosków zewnętrznych (tj document(), xsl:include z XSLT lub podmiotów zewnętrznych w formacie XML) nie są obsługiwane przez XmlHttpRequest -retrieved obiektów i musi być włączony jawnie. Różni się to od przeglądarek innych niż IE, w których zewnętrzne żądania z dołączonych dokumentów są dozwolone (lub nie istnieją, tak jak w Safari i Chrome).

+1

'Dobra wiadomość jest taka: domyślnie jest włączona, większość użytkowników ją włączy." - dlatego zadałem to pytanie, dowiedziałem się, że jeden z moich użytkowników nie włączył tego i to spowodowało, że aplikacja zawieść. Nawet nie zdawałem sobie sprawy, że do tego czasu mógł zostać wyłączony. –

2

To jest domysły, ale przypuszczam, że pozwalają na wyłączenie go z tego samego powodu, dla którego pozwalają na wyłączenie JavaScript. Niektórzy uważają, że ryzyko (prywatność, bezpieczeństwo, cokolwiek) przeważa nad korzyścią, a więc chce ją wyłączyć.

+0

Mogłem to zrozumieć, gdyby został wyłączony wraz z ActiveXObject. Ale faktycznie można wyłączyć XMLHttpRequest i nadal używać ActiveXObject ("Microsoft.XMLHttpRequest"). –