Как известно, основной проблемой всех людей создающих веб страницы, является
то, как сделать страницы одинаково видимыми как в Нетскейпе так и на Интернет
Эксплорере. И ладно бы только в них, так еще на каждой версии этих
браузеров.
Ну, слава богу, успешно канули в лета 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
|