Веб Дизайн - статьи

       

А как же Netscape Navigator?


Конечно, фирма Netscape не может совсем уж игнорировать технологию ActiveX, хотя и преисполнена по отношению к ней здоровым скептицизмом. Если вы не хотите расставаться со старым добрым Netscape Navigator, то для вас единственный способ познакомиться с этой новинкой - особый , разработанный фирмой NCompass Labs. Этот модуль умеет запускать органы управления ActiveX и даже обеспечивает их поддержку из сценариев.

По отзывам пользователей, модуль этот (называемый ScriptActive) работает вполне прилично и иногда даже обгоняет по скорости работы органов управления ActiveX сам Internet Explorer. К сожалению, надежность его вызывает нарекания (официально он все еще находится в стадии бета-тестирования). Если достаточно долго и интенсивно работать со страницами, насыщенными компонентами ActiveX, то в конце концов почти неизбежно нарвешься на ошибку, приводящую к зависанию Netscape. Это вполне объяснимо - ActiveX и вообще OLE для Netscape Navigator не является чем-то столь же родным и естественным, как для Internet Explorer, и трудности сочетания в одной программе двух очень разных программных идеологий неизбежно дают себя знать.

С этим, однако, вполне можно было бы мириться, если бы не одна техническая трудность. Netscape Navigator не распознает тег <OBJECT> - и потому, даже с подключенным модулем ScriptActive, не может вызывать органы управления, вводимые этим тегом. Как известно, вызов подключаемых модулей Netscape производится с помощью тега <EMBED>. Это значит, что авторы, которые хотят, чтобы органы управления на их страницах работали в обоих броузерах, должны продублировать информацию тега <OBJECT> в теге <EMBED>. А чтобы заставить Internet Explorer не обращать внимания на этот лишний для него <EMBED> (как вы знаете, Internet Explorer поддерживает этот тег и даже способен работать с подключаемыми модулями Netscape), этот тег помещают внутрь соответствующей пары тегов <OBJECT> ... </OBJECT>.

Такой выход из положения применяется в HTML довольно часто - пользуясь каким-нибудь новым тегом, автор в целях совместимости помещает между этим тегом и парным ему закрывающим что-нибудь, что будет видно только старым броузерам, игнорирующим новый тег; новый же броузер, распознающий этот тег, наоборот, обязан игнорировать все, что расположено внутри парного тега. (Надо признаться, что Netscape Navigator едва ли не первый раз в своей жизни оказывается в роли "старого броузера".) Вот как выглядит тег <OBJECT>, информация которого повторена во вложенном теге <EMBED>: <OBJECT WIDTH=320 HEIGHT=240 CLASSID="clsid:0D5C3F21-6DF8-11CF-AAEB-02608C9EA5BF" CODEBASE="http://www.ncompasslabs.com/ActiveX/ocx/nbillbrd.ocx" DATA="http://www.ncompasslabs.com/ActiveX/inline/billboard.ods" > <PARAM NAME="Slideshow" VALUE="1"> <PARAM NAME="LocalButtons" VALUE="0"> <PARAM NAME="Delay" VALUE="1"> <EMBED WIDTH=320 HEIGHT=240 SRC="BillBoard.ods" CODE="http://www.ncompasslabs.com/ActiveX/ocx/nbillbrd.ocx" Slideshow=1 <!- параметры стали атрибутами -> LocalButtons=0 Delay=1 > </OBJECT>

Для атрибута CLASSID тег <EMBED> не имеет соответствующего элемента, поэтому броузеру (точнее, подключаемому модулю) приходится извлекать идентификатор класса из самого файла с органом управления. Разумеется, присутствие тега <EMBED> - в любом случае не более чем следствие предусмотрительности автора страницы (и его вежливости по отношению к пользователям Netscape Navigator); к примеру, на сервере использовать этот тег как-то не принято.



Содержание раздела