Blog webdeveloperski Patryk yarpo Jar

Ajax dla IE6

Autor wiadomości Marzec 6, 2011

W artykule "Obiekt XMLHttpRequest" pokazałem jak można używać Ajaksa opartego o specjalny obiekt do tego przeznaczony. Co jednak zrobić, gdy jakaś przeglądarka nie ma zaimplementowanego takiego obiektu?

Możliwe wyjścia

W przypadku nowoczesnych przeglądarek (włączając w to IE7 i nowsze) istnieje banalny sposób na stworzenie obiektu XMLHttpRequest. Wymagany kod:

var client = new XMLHttpRequest();

Niestety w przypadku Internet Explorera 6 takie coś działać nie będzie. Jednak spokojnie – pamiętaj, że IE 6 to najlepsza przeglądarka na świecie*. Można żartobliwie powiedzieć, że potrafi robić nawet to, czego nikt tworząc go nie przewidział. Także tę lukę można załatać.

Sposób na wykorzystanie AJAX w IE6

var client = createXmlHttpRequestObject();

function createXmlHttpRequestObject()
{
    var xmlHttp = null;
    try
    {
        xmlHttp = new XMLHttpRequest(); // nowoczesne przegladarki
    }
    catch(e) // IE <= 6
    {
        var XmlHttpVersions = [
            'MSXML2.XMLHTTP.6.0',
            'MSXML2.XMLHTTP.5.0',
            'MSXML2.XMLHTTP.4.0',
            'MSXML2.XMLHTTP.3.0',
            'MSXML2.XMLHTTP',
            'Microsoft.XMLHTTP'
        ];
        for (var i=0; i < XmlHttpVersions.length && null === xmlHttp; i++)
        {
            try
            {
                xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
            } catch (e) {}
        }
        if (null === xmlHttp)
        {
            throw new Error('Nie uda się użyć Ajaksa');
        }
    }
    return xmlHttp;
}

Jak można łatwo zauważyć porównując listing 1 i 2, IE6 wymaga sporego nadpisania kodu. Oczywiście ma to wpływ na szybkość działania strony.

Sądzę, że lepszym sposobem na walkę z IE jest wykorzystanie frameworków JS, np. jQuery. Dzięki nim można pisać szybciej, efektowniej, a o kompatybilność dba dana biblioteka. Choć tak naprawdę najlepszym sposobem jest zaintalowanie przeglądarki. Dajmy już wreszcie odejść IE 6 na emeryturę 🙂

--
* ten program ma już blisko 11 lat, a mimo to potrafi w ogóle wyświetlić dzisiejsze strony. Uważam to za sukces. Nie zmienia to faktu, że jest już stary i jego czas w Internecie dawno powinien był się skończyć.

Komentarze (0) Trackbacks (0)

Brak komentarzy.


Leave a comment

 

Brak trackbacków.