Практика разработки Web-страниц


Сценарий работает в одном броузере, но не работает в другом - часть 2


  • Следующий шаг – использовать разные эффекты или разные страницы для разных броузеров. Есть много способов определять тип броузера и реагировать на него, ниже приведены два самых простых. Вы можете проверить, располагает ли броузер теми объектами, которые вы хотите использовать. Предположим, вы хотите использовать код, который изменяет стили в зависимости от каких-нибудь событий на странице – это можно сделать, только если в версии броузера есть объекты styleSheet и коллекции styleSheet. Расположенный в разделе <HEAD> вашей страницы, этот сценарий переадресовывает посетителей с новыми версиями броузеров на другую страницу.

    <script language="JavaScript"> <!-- // Переадресация посетителей с Netscape 5+ и IE 4+ на новый сайт. if (document.styleSheets) window.location=’coolsite/’; //--> </script>

    Второй способ – это определить, какую версию броузера использует посетитель, а затем с помощью конструкции "if" спланировать в коде, когда какие усовершенствования вы будете использовать. Ниже приведен пример функции, которую можно использовать для определения версии броузера. После того, как вы включите ее в блок сценария в раздел <HEAD>, вы легко сможете проверить версию броузера, когда того потребует ваш сценарий. (Если вы хотите использовать отдельный код для каждой операционной системы или незначительной версии, поищите более сложную проверку.)

    function bVer() { /* bVer - Browser detection function To use, create a bVer object and refer to its properties: bv = new bVer(); если ( bv.ie4 || bv.ie5 || bv.nav5 ) { document.writeln("<p>This browser can do cool stuff.</p>"); } */ var br = navigator.userAgent.toLowerCase(); var ie = br.indexOf('msie'); var mz = br.indexOf('mozilla'); this.ie = (ie != -1); this.nav = ((ie == -1) && (mz != -1)) если (this.ie) { this.ver = Number(br.substring(ie+5, ie+6)); } else если (this.nav) { this.ver = Number(br.substring(mz+8, mz+9)); } this.ie3 = (this.ie && (this.ver == 3)); this.ie4 = (this.ie && (this.ver == 4)); this.ie5 = (this.ie && (this.ver >= 5)); this.nav4 = (this.nav && (this.ver == 4)); this.nav5 = (this.nav && (this.ver >= 5)); }

  • Общая проблема программирования – это различия между событиями в броузерах. Netscape признает события только для некоторых объектов. Например, событие click применяется к тэгам <A> и <INPUT> в Netscape, но не для тэгов <IMG> или <DIV>, как в Internet Explorer. Вдобавок, у Internet Explorer и Netscape разные стратэгии для управления событиями в коде. Для получения дополнительной информации об этих и других различиях обращайтесь на msdn.microsoft.com и developer.netscape.com.




    Начало  Назад  Вперед