On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Как я разделял доступ к страницам

Как известно, основной проблемой всех людей создающих веб страницы, является то, как сделать страницы одинаково видимыми как в Нетскейпе так и на Интернет Эксплорере. И ладно бы только в них, так еще на каждой версии этих браузеров.

Ну, слава богу, успешно канули в лета 2ые версии NN и MSIE. Но вот о 3их версиях, еще забыли не все :о( Из-за чего? - спросите Вы. Обычно Трешками (особенно MSIE 3) пользуются новички в Интернете. Поскольку этот браузер устанавливается по умолчанию, при инсталляции Windows95. Любители Нетскейпа люди более прогрессивные, и обычно следят за выпуском новых версий. Но и среди них находятся индивидуумы, не приемлющие новизны технологий. Среди таких, как ни странно, много и самой продвинутой части населения сети: Вебмастеров и Сисадминов. В том числе иногда к таким индивидумам начинаю относиться и я, хотя без листов стилей жить уже не могу.

Если уменьшить различия показа страницы между Нетскейпом 4.х и Эксплорером 4.х, еще как-то удается (используя только теги обрабатываемые Нетскейпом или листы Стилей, а также кое-где ява скрипты), то показ этих же страниц на 3их версиях обоих смотрелок приведет к самым плачевным результатам.

Что хотелось бы сделать, для решения этой проблемы. Задумка нашлась сразу. Это должен был быть некий ява скрипт, который бы определял при загрузке документа какой версии браузер у пользователя, и если смотрелка 4ой версии, то показывал бы содержимое страницы, а если 3ей, то выводил бы упрощенную версию, или просто извинение за неудобства. И еще хорошо бы все это расположить на одной странице, дабы не досаждать переадресацией.

Ну сам скрипт для определения версии браузера и вывода кода HTML в соответствии с этим, очень прост:

<script language="JavaScript"><!-
var brous;
brous = navigator.appVersion;
if (brous.substring(0,1) <4 )
document.write("<P>Тут код для 3их браузеров</P>");
-></Script>

Поясню, что тут к чему:
переменной brous мы задаем значение о версии браузера пользователя, в частности для Вас это будет : 4.0 (compatible; MSIE 4.01; Windows 98)
Поскольку для нас является значащей только первая цифра, то с помощью brous.substring(0,1) мы ее и выделяем. И если она меньше 4х, то выводим HTML код, который написан в document.write. При этом следует помнить, что MSIE3.0 на самом деле дает 2ую версию на этой позиции - поэтому здесь поставлен знак меньше, а не два равно.

Вроде бы ура!, можно пить пиво, но не тут то было :(. Да этот скрипт выведет нужную нам информацию для 3их смотрелок, но он и выведет содержимое страницы, которое предназначено только для 4ых. Что делать? Первая мысль, поставить условие для четверок, и заключить текст страницы в несколько document.write, но представляете, как трудно будет обновлять такую страницу? Короче - ужас.

Немного подумав, я вспомнил о замечательном теге комментария <!-. Если его поставить в конец кода выводимого для 3 версий браузеров, то тогда остальной код следующий за ним, превратится в комментарий, и станет невидимым. Ободренный таким умозаключением, я проделал это, и написал вот примерно так:
...
document.write("<P>Тут код для 3их браузеров</P><!-");
...

И запустил страницу. Нда, конечно ничего не заработало :о( Броузер посчитал, что все что следует после <!- в скрипте, тоже комментарий:
...
document.write("<P>Тут код для 3их браузеров</P><!- ");
-></Script>

...


Что, опять облом? И как заставить скрипт написать <!-? А оказалось очень просто! Надо его разделить на две части вот так:
...
document.write("<P>Тут код для 3их браузеров</P><!" + "-");
...

Но тег комментария надо бы и закрыть, а то никакого эффекта мы не получим. Если сделать это с помощью такого же скрипта, но в конце документа, то он не заработает. Поскольку, как Вы уже наверное догадались, этот скрипт попадет в первый сгенерированный комментарий. Поэтому -> надо ставить явно после </html>. Так что просто напишите <!- ->. Тег открытия уйдет в наш комментарий, а тег закрытия закроет все.

Вот и все!



Литература по Internet