Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » Ajax и&nb p;браузеры: проверка совместимости

 

Ajax и&nb p;браузеры: проверка совместимости

 

 

Совместимость программного кода веб-страницы с различными браузерами – одна из основных задач, стоящих перед разработчиком. Вы должны быть уверены, что AJAX-движок вашего сайта формирует структуру данных, передаваемых клиенту именно таким образом, которым браузер клиента ожидает их получить.

XMLHttpRequest, Microsoft.XMLHTTP, Msxml12.XMLHTTP — разные объекты, выполняющие одинаковые функцииДля формирования AJAX-приложением HTTP- запроса используются стандартные инструменты языка Java Script, реализация которого, как известно, в различных браузерах имеет свои особенности. В браузерах Firefox и Opera объект Java Script, отвечающий за отправку запросов веб-серверу, называется XMLHttpRequest. В то же время, начиная с версии IE 5.0, в браузерах Internet Explorer имеется такой компонент Active X, как Microsoft.XMLHTTP (или Msxml12.XMLHTTP), выполняющий, как нетрудно догадаться, те же функции.

загрузка...

 

 

В результате мы имеем ситуацию, при которой программный код, формирующий запрос к веб-серверу, ориентированному на браузер Firefox, не будет работать в браузере Internet Explorer, и наоборот. На самом деле даже в том случае, если вы будете ориентироваться только на пользователей браузера IE, задача не становится проще, и вот почему: как уже упоминалось немного выше, имеются две реализации компонента Active X, формирующего HTTP-запрос, – Microsoft.XMLHTTP и Msxml12.XMLHTTP. Очевидно, что это разные версии компонента. Но, что более важно, далеко не очевидно то, что данные компоненты от одного и того же производителя несовместимы друг с другом. Под несовместимостью понимается то, что в системе с установленным компонентом Microsoft.XMLHTTP программный код, ссылающийся на компонент Msxml12.XMLHTTP, при попытке его выполнения сгенерирует ошибку. Не вдаваясь в подробности особенностей использования того или иного компонента, можно сказать, что при использовании компонента Microsoft.XMLHTTP оболочка, в которую он помещен – ActiveXObject, – будет пытаться использовать наиболее последнюю из известных ей версий объекта, соответствующих данной версии браузера. Теоретически таким объектом должен оказаться объект, входящий в состав MSXML 2.0 (Microsoft XML Core Services). Но MSXML 2.0 включен в поставку IE, начиная только с шестой версии, которая еще не так сильно распространена, чтобы можно было бы использовать Microsoft.XMLHTTP без оглядки на возможные неприятные последствия. Если вы используете компонент Msxml12.XMLHTTP, это является сигналом для ActiveXObject использовать MSXML версии не старше 1.0.

Несмотря на то что Microsoft и сообщество разработчиков открытого проекта Mozilla выбрали разные пути реализации объекта, формирующего запрос на получение XML-данных с веб-сервера, все-таки есть способ создать универсальный AJAX-код, корректно работающий в различных браузерах.

Итак, первое, что необходимо сделать при использовании элементов технологии AJAX на веб-странице, это проверить, какой вид объекта, реализующего формирование запроса, используется браузером клиента, а затем должным образом инициализировать этот объект. Напишем функцию, реализующую выполнение поставленной задачи.

if (window.XMLHttpRequest){
#nbsprequest = new XMLHttpRequest();
#nbsprequest.onreadystatechange=handleResponse;
#nbsprequest.open("GET",theURL,true);
#nbsprequest.send(null);
}

Если браузер поддерживает объект XMLHttpRequest, тогда:
1) условие if (window.XMLHttpRequest) возвращает значение true;
2) создается новый объект XMLHttpRequest;
3) в качестве слушателя-обработчика событий данного объекта используется стандартная функция Java Script – handleResponse();
4) вызываются методы open() и send() созданного объекта.

Фильтр из условных операторов поможет определить используемую браузером модель формирования HML-запросовОсталось добавить проверку на использование объектов Microsoft.XMLHTTP и Msxml12.XMLHTTP. В случае использования клиентом браузера IE объект XMLHttpRequest уже не будет существовать и выражение if (window.XMLHttpRequest) возвратит значение false. Остается выполнить еще пару проверок:

else if (window.ActiveXObject){
request=new ActiveXObject("Microsoft.XMLHTTP");
if (! request){
request=new ActiveXObject("Msxml2.XMLHTTP");
}
if(request){
request.onreadystatechange=handleResponse;
request.open(reqType,url,true);
request.send(null);
}
}

Этот фрагмент кода проверяет наличие объекта ActiveXObject, который свидетельствует об использовании браузера Internet Explorer. Сам же запрос может выполняться с использованием одного из двух ActiveX-компонентов — Microsoft.XMLHTTP и Msxml12.XMLHTTP.

Конечно, помимо этих основных разновидностей объекта, осуществляющего XML-запрос через HTTP, есть и другие. Однако в большинстве случаев приходится иметь дело именно с только приведенными тремя. Но в случае необходимости аналогичным образом можно добавить проверку и на остальные версии.

Определив используемый объект HML-запросов, можно разворачивать Ajax-приложение, не волнуясь за совместимость с разными версиями браузеровПройдя через фильтр, состоящий из конструкций if(), и получив на выходе значение true, можно, в соответствии с конкретной версией браузера клиента, приступать к формированию XML-запроса в стиле AJAX.

В готовом виде процедура проверки версии библиотеки XMLRequest выглядит следующим образом.

function httpRequest(reqType,url,asynch){

if(window.XMLHttpRequest){
request = new XMLHttpRequest( );
} else if (window.ActiveXObject){
request=new ActiveXObject("Msxml2.XMLHTTP");
if (! request){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}

if(request){
initReq(reqType,url,asynch);
} else {
alert("Your browser does not permit the use of all "+
"of this application's features!");
}
}

function initReq(reqType,url,bool){

request.onreadystatechange=handleResponse;
request.open(reqType,url,bool);
request.send(null);
}




Статья получена: hostinfo.ru

загрузка...

 

 

Наверх


Постоянная ссылка на статью "Ajax и&nb p;браузеры: проверка совместимости":


Рассказать другу

Оценка: 4.0 (голосов: 16)

Ваша оценка:

Ваш комментарий

Имя:
Сообщение:
Защитный код: включите графику
 
 



Поиск по базе статей:





Темы статей






Новые статьи

Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

Вместе с этой статьей обычно читают:

AJAX: что скрывается за этими буквами?

AJAX - новый модный термин, знание которого причисляет человека к сонму людей, идущих не то чтобы в ногу со временем, а даже слегка впереди. Что скрывается за этими буквами? Аббревиатура расшифровывается как Asynchronous JavaScript + XML (асинхронный JavaScript+XML).

» Продвижение и оптимизация - 1613 - читать


AJAX для PHP&nb p;&mda h; легко

Серверный язык PHP уже давно стал одним из признанных лидеров в сфере веб-разработок. Многие специалисты любят его за относительную простоту и большие возможности. В то же время бум Web 2.

» Интересное в сети - 1981 - читать


Что такое Ajax

Привычная модель взаимодействия пользователя с веб-приложением подразумевает несколько неприятных моментов. Любой, кто заполнял формы на сайтах, сталкивался с тем, что после нажатия кнопки « Submit» приходится ждать ответа от сервера.

» Интересное в сети - 3323 - читать


Dojo Toolkit&nb p;&mda h; верный помощник AJAX-программиста

Уверен, каждый AJAX-специалист не раз и не два за все время своей работы сталкивался с ситуациями, когда не можешь отделаться от чувства, будто заново изобретаешь колесо. Объект XMLHttpRequest — это то, о чем мы думаем в первую очередь, когда разговор идет об AJAX, но на самом деле это только начало, самая простая часть. В разработке веб-приложений второго поколения существует множество тонкостей, о которых приходится думать постоянно: браузерная совместимость, работа ...

» Интересное в сети - 2120 - читать


Европейская проверка

Нынешняя неделька прошла спокойно — без интриг, без краж и скандалов. Впрочем, кое-кому стоит напрячься. Однако обо всем по порядку.

» Интересное в сети - 1318 - читать



Статья на тему Интернет » Интересное в сети » Ajax и&nb p;браузеры: проверка совместимости

Все статьи | Разделы | Поиск | Добавить статью | Контакты

© Art.Thelib.Ru, 2006-2024, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

Энциклопедия Art.Thelib.Ru