Очевидно, что браузеры разных версий и разных производителей отличаются степенью поддержки базовой версии JavaScript и возможностей DOM. Свойство window.navigator.userAgent позволяет определить параметры браузера и организовать адекватную настройку сценария. Однако в большинстве случаев нас интересует более узкий и конкретный вопрос: реализована ли в данном браузере нужная нам возможность. Скажем, при желании организовать смену изображений в ответ на события мыши надо по крайней мере убедиться в том, что браузер поддерживает свойство document.images . Проверяется поддержка существенных для сценария свойств и методов, естественно с помощью условного оператора. Например, в случае примера со сменой изображений
if ( document.images )
{ ...
описание функций и операторов,
обеспечивающих смену изображений
...
}
else
{ ...
альтернативный вариант
...
};
Вот несколько примеров. Ниже в зависимости от поддержки реализованной в данном браузере версиии JavaScript определенных (существенных) возможностей выводятся сообщения.
Браузер поддерживает свойство document.images. Это дает возможность организовать смену изображений в ответ на события мыши.
Браузер не поддерживает свойство document.layers. Это точно не Netscape Navigator 4 - и слава богу. Есть надежда, что реализована совместимость с DOM (увидим далее).
Браузер не поддерживает свойство document.all. Это точно не MS IE 4+ .
Браузер поддерживает свойство document.getElementById. Это дает удобную возможность обращаться к элементу документа, имеющему уникальный ID. Браузер может быть MS IE 5+ или Mozilla, но это уже не так важно.
Ниже приведен код JavaScript, использованный для вывода сообщений. В реальной ситуации в подобных условных инструкциях, разумеется, должен быть не вывод сообщения методом document.write(), а программный код, соответствующий особенностям браузера.
<script type="text/javascript">
if (!document.images)
document.write('Браузер не поддерживает свойство <b>document.images</b>. Такое бывало, например, с MS IE 3. ' +
'Это может быть очень старый графический либо современный, но текстовый, браузер. ' +
'Организовать смену изображений в ответ на события мыши не удастся.<p>')
else
document.write('Браузер поддерживает свойство <b>document.images</b>. Это дает возможность организовать ' +
'смену изображений в ответ на события мыши.<p>');
if (!document.layers)
document.write('Браузер не поддерживает свойство <b>document.layers</b>. Это точно не Netscape Navigator 4 - ' +
'и слава богу. Есть надежда, что реализована совместимость с DOM (увидим далее).<p>')
else
document.write('Браузер поддерживает свойство <b>document.layers</b>. Значит, это Netscape Navigator 4. ' +
'К сожалению, многие современные стандартизированные возможности JavaScript ' +
'в этом браузере не реализованы.<p>');
if (!document.all)
document.write('Браузер не поддерживает свойство <b>document.all</b>. Это точно не MS IE 4+ .<p>')
else
document.write('Браузер поддерживает свойство <b>document.all</b>. Значит, это MS IE 4+ .<p>');
if (!document.getElementById)
document.write('Браузер не поддерживает свойство <b>document.getElementById</b>, т.е. не совместим с DOM. ' +
'Браузер точно не может быть MS IE 5+ или Mozilla.' +
'Обращаться к элементу документа, имеющему уникальный ID, придется изощренными и странными способами.<p>')
else
document.write('Браузер поддерживает свойство <b>document.getElementById</b>. ' +
'Это дает удобную возможность обращаться к элементу документа, имеющему уникальный ID. ' +
'Браузер может быть MS IE 5+ или Mozilla, но это уже не так важно.<p>')
</script>