Начало · Справочники · Курсы · Разговоры

leechy.ru · Сайт почти придуман

Скажи мне, что у тебя за браузер...

Чем отличается статический от динамического HTML? Если честно — ничем! Просто с помощью JavaScript-а можно менять свойства всех или некоторых элементов на странице и таким образом «оживить» ее. Вот именно всех или некоторых или вообще до каких элементов можно «достучаться» с помощью JavaScript зависить от того, каким браузером просматриваеш ее. К счастию именно с помощью JavaScript можно определить что это за браузер.

Netscape Navigator, версия 4

Первый навигатор, в котором можно достучаться до других объектов страницы, кроме элементов форм и изображений стал Netscape Navigator 4. Слабая объектная модель в нем позволяет работать с определенными элементами — слоями. По английски слой — layer. Слои на самом деле революционная идея, которая позволяет в одном документе реализовать несколько независящих друг от друга HTML-потоков. Об этом напишу в другой раз, самое главное, что все слои верхнего уровня (бывают еще вложенные слои) собраны в JavaScript-овую коллекцию layers. И именно наличие этой коллекции показывает, что это именно Netscape 4 или как я буду называть его дальше — «NN4». Проверить есть ли она или нет можно с помощью следующей строки:

nn4 = (document.layers)? true : false;

В следующей версии Netscape уже нет этой коллекции, поэтому если в переменную nn4 записано true - это однозначно NN4!

MS Internet Explorer... тоже 4-й

В Microsoft пошли другим путем. Развивая идею стилей (CSS), которая к тому моменту уже получила одобрение "народа", они решили сделать нормальную объектную модель, в которой доступны все элементы документа. Свою JavaScript-коллекцию они недолго думая назвали коротко - all. Проверить ее наличие можно аналогичным способом:

msie = (document.all)? true : false;

Нетскейповская идея со слоями с счастию тоже была реализована. В рамках W3C совместно Microsoft и Netscape разработали т.н. CSS-Positioning (CSS-P), в котором были определены свойства элементов, которые Netscape придумала для своих слоев... конечно-же Microsoft добавила туда и что-то от себя ;-)

World Wide Web Consortium устанавливает версии

Сразу после выхода четвертых версий NN и MSIE, W3C взялась за разработку единого стандарта объектной модели в HTML-документах. Так и родился DOM (Document Object Model) - Объектная Модель Документа. Навигатор стали разрабатывать по стандартам W3C, причем open source. В 5-й MSIE имплементировали очень большая часть этих-же стандартов. Даже маленькая Opera заявила их поддержку в своей 4-й версии. Все надеемся, что жить станет хорошо... после того, как "похороним" NN4 и MSIE4.

По стандарту нельзя получить доступь к любому элементу через какую нибудь коллекцию (в MSIE по прежнему можно, но советую этого не делать, а писать одни скрипты для всех новых браузеров). Но это можно сделать с помощью не очень короткой (по написанию) функции getElementById(). Именно ее наличие и проверим:

dom = (document.getElementById)? true : false;

Переменную я назвал dom, т.е. браузер поддерживает хотя бы DOM level 1. Если появятся новые браузеры, которые его поддерживают, то на них (по идее) все скрипты будут работать. Пока такой только Opera, да и тот теряет своих приверженцев после выхода 4-й версии. Поживем увидим. А пока...

Что получилось в итоге

В итоге все скрипты, которые буду писать в самом начале будут содержать следующий код:

dom = (document.getElementById)? true : false;
nn4 = (document.layers)? true : false;
ie4 = (!dom && document.all)? true : false;

В последей строчке выделяется исключительно MSIE4. Хотя скрипты для него будут выполнятся и в более свежих версиях, выделение 4-го позволить легче расстаться с ненужным кодом после "исчезновения" браузера.