Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Сценарии, которые могут работать в разных браузерах




В настоящее время ежедневная численность работающих с Web составляет более 60 млн. человек, из которых 30-35% используют Internet Explorer, а 55-60% - Netscape Navigator. Поскольку эти браузеры занимают доминирующие позиции на рынке, наша цель - создать сценарии, которые будут восприниматься обеими системами. Для этого нужно использовать только общие элементы объектных моделей JScript и JavaScript . На первый взгляд все очень просто. Однако лишь очень немногие владельцы Web-узлов действительно понимают имеющиеся между JScript и JavaScript различия, и уж совсем мало таких, кто может четко обозначить то общее, что у них есть. Но теперь, имея на вооружении данные таблиц 2 и 3, можно приступать к составлению сценариев, которые будут работать в среде как Internet Explorer, так и Netscape Navigator.

При разработке необходимо помнить о постоянном совершенствовании спецификаций JScript и JavaScript. С выходом очередной версии Internet Explorer или Netscape Navigatorможно ожидать появления новых функций в соответствующем языке. Если вы хотите использовать конкретное свойство, присутствующее только в одной спецификации, необходимо, чтобы сценарий либо выда-вал сообщение о наличии функций, не предусмотренных в браузере пользователя, либо корректно работал в обоих браузерах.

Как это сделать? Секрет в том, чтобы организовать ветвление внутри сценария: первая ветвь команд будет исполняться браузером Internet Explorer, другая - Netscape Navigator . Поскольку до начала обработки любой функции браузер не проверяет ее на допустимость, наличие посторонних функций в сценарии не приведет к сообщению об ошибке. В примере показан прототип сценария, который я постоянно использую для Web-страниц; он не приостанавливает свою работу ни в среде Internet Explorer, ни Netscape Navigator . При изучении текста сценария вы можете видеть, как параметр Navigator. appName позволяет узнать имя браузера, чтобы затем передать управление соответствующей функции.

Пример 1

<SCRIPT LANGUAGE="JavaScript"> <!-- // присвоить значения переменным browserName = "" browserName = navigator.appName function shield() { if (browserName == "Microsoft Internet Explorer") { ieCall() } else if (browserName == "Netscape") { ncCall } else genCall() } function ieCall() { // вставьте операторы и вызовы функций, предусмотренные для Internet Explorer и JScript } function ncCall() { // вставьте операторы и вызовы функций, предусмотренные для Netscape Navigator и JavaScript } function genCall() { // запасной вариант для других браузеров, "понимающих" сценарии JavaScript. Сюда рекомендуется вставлять наиболее общие операторы и вызываемые функции. } // --> </SCRIPT>

Также можно предусмотреть выполнение функций, уникальных для конкретных версий браузеров. Для этого следует проверять имя браузера и сведения о его версии с помощью параметров Navigator.appName и Navigator.appVersion. Здесь перед вызовом нужной функции проверяются оба параметра. Однако текст сценария будет получаться более запутанным; один из способов его упрощения - брать имя браузера и данные о версии из параметра Navigator. userAgent, который содержит сводную информацию о браузере. В этом случае потребуется проверка только одного параметра вместо двух.

Кроме того, вы можете обеспечить, чтобы выполнялись только те сценарии, которые соответствуют конкретной версии JavaScript, предусмотренной браузером пользователя. Для этих целей применяется тэг SCRIPT, например:

<SCRIPT LANGUAGE="JavaScript"><SCRIPT LANGUAGE="JavaScript1.1"><SCRIPT LANGUAGE="JavaScript1.2">

Но учтите: поскольку Internet Explorer не различает версий JavaScript 1.1 или JavaScript 1.2, обычно лучше пользоваться функцией, продемонстрированная в приложение 4. Тогда браузеры любого типа, где предусмотрены сценарии JavaScript, сумеют извлечь максимум информации, содержа-щейся на вашей Web-странице.

При изучении работы этого сценария обратите внимание, что в Navigator сначала полностью загружается HTML-документ, а лишь потом начинается обработка сценария. В Internet Explorer, наоборот, сразу приступают к делу и сценарий начинает исполняться еще до того, как закончится загрузка всей страницы. Видно, что процедуры загрузки и отображения Web-страниц в браузерах Navigator и Internet Explorer работают по-разному: Navigator последовательно выводит элементы страницы по мере их получения, а Internet Explorer сначала строит структуру страницы, а затем начинает показывать ее элементы.

В примере 5 подробно описан пример, который работает в часто используемых браузерах.

Пример 5

<HTML><HEAD><SCRIPT><!-- hide //скрыть от старых браузеров // присвоить значения переменнымvar pos = 0; // начальная позицияvar move = true; // движениеvar direction= false; // направлениеvar mie=false; // проверяем браузерif(navigator.appName.indexOf("Microsoft")!=-1) {mie=true;} // Функция отвечающая за движение и направлениеfunction moveNclip() { // перемещение вперед if (move & direction ) { pos-=1 if (pos < -986) move=false; if(!mie) document.layers["clippingLayer"].layers["imgLayer"].top= pos; // обращение к вложенному слою imgLayeirelse document.all.imgLayer.style.pixelTop= pos; // обращение к стилю imgLayeir } // перемещение назадif (!move & !direction ) { pos+=1 if (pos > 200) move=true; if(!mie) document.layers["clippingLayer"].layers["imgLayer"].top= pos; else document.all.imgLayer.style.pixelTop= pos; }} // Функция изменяющая движение и направлениеfunction StopStart(par){if (par == 0) { direction= false; move = false;}if (par == 1) {move = false; direction= true;}if (par == 2) { direction= true; move = true;} } function DrowPicture(){ // если Netscape Navigator создаем слоиif(!mie){s='<CENTER><ILAYER NAME="clippingLayer" CLIP="0,0,1000,185"><ILAYER NAME="imgLayer" TOP=0 LEFT=0>'s+='<IMG NAME=davinci SRC="text1.gif"></ILAYER></ILAYER></CENTER>'s+='<LAYER TOP=230 ><CENTER><FORM>'s+='<INPUT TYPE="button" VALUE="&lt;&lt;" onClick="StopStart(0);">'s+='<INPUT TYPE="button" VALUE="STOP" onClick="StopStart(1);">'s+='<INPUT TYPE="button" value="&gt;&gt;" onClick="StopStart(2)"><p>'s+='<INPUT TYPE="button" VALUE="CLOSE" onClick="window.close()"></FORM></CENTER></LAYER>'} // если Internet Explorer создаем стилиif (mie){s='<CENTER><DIV ID="imgLayer" STYLE="position:absolute; top:0;"><IMG SRC="text1.gif"></DIV></CENTER>'s+='<DIV ID="dummy" STYLE="position:absolute; top:185; left:0; height:800; background-color:bisque"></DIV>'s+='<DIV ID="ButtonsForm" STYLE="position:absolute; top:220;" ><CENTER><FORM>'s+='<INPUT TYPE="button" VALUE="&lt;&lt;" onClick="StopStart(0);">'s+='<INPUT TYPE="button" VALUE="STOP" onClick="StopStart(1);">'s+='<INPUT TYPE="button" VALUE="&gt;&gt;" onClick="StopStart(2)"><p>'s+='<INPUT TYPE="button" VALUE="CLOSE" onClick="window.close()"></FORM></CENTER></DIV>'}document.writeln(s);}// --></SCRIPT></HEAD><BODY BGCOLOR="bisque" onLoad="setInterval('moveNclip()', 10);"><SCRIPT> DrowPicture();</SCRIPT></BODY></HTML>

 


Поделиться:

Дата добавления: 2015-09-15; просмотров: 60; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты