Как я разделял доступ к страницам для браузеров ниже 4-ой версии
Как я разделял доступ к страницам
для браузеров ниже 4-ой версии
Как известно, основной проблемой всех людей создающих веб страницы, является
то, как сделать страницы одинаково видимыми как в Нетскейпе так и на Интернет
Эксплорере. И ладно бы только в них, так еще на каждой версии этих браузеров.
Ну, слава богу, успешно канули в лета 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 мы задаем значение о версии браузера пользователя, в
частности для Вас это будет :
document.write(navigator.appVersion);
Поскольку для нас является значащей только первая цифра, то с помощью 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>. Так что просто напишите <!- ->. Тег открытия уйдет в наш комментарий,
а тег закрытия закроет все.
Вот и все!
|