(093) 470-44-28
(096) 33-789-32
Блокнот

Вставка Java-апплета с помощью тега <OBJECT>

Элемент 'APPLET' является устаревшим, вместо него спецификация HTML 4.01 предоставляет элемент 'OBJECT'.

Примеры

Класс main апплета (Sample2) и другие необходимые классы не находятся внутри jar файла (java архива).

<applet code="Sample2" 
height="300" width="450" >
</applet>

заменяется на:

<!--[if !IE]>
<object classid="java:Sample2.class"
type="application/x-java-applet"
height="300" width="450" >
<![endif]-->
<!-- MSIE (Microsoft Internet Explorer) будет использовать внутренний объект -->
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab"
height="300" width="450" >
<param name="code" value="Sample2" />
<strong>
Этот браузер не имеет Java-плагина.
<br />
<a href="http://java.sun.com/products/plugin/downloads/index.html">
Скачайте по ссылке самую последнюю версию Java-плагина.
</a>
</strong>
</object>
<!--[if !IE]>
</object>
<![endif]-->

Класс main апплета (Sample2) и другие необходимые классы находятся внутри jar файла (java архива).

<applet code="Sample2" 
archive="Sample2.jar"
height="300" width="450" >
</applet>

становится:

<!--[if !IE]>
<object classid="java:Sample2.class"
type="application/x-java-applet"
archive="Sample2.jar"
height="300" width="450" >
<!-- Браузеру Konqueror необходимо указывать следующий параметр -->
<param name="archive" value="Sample2.jar" />
<![endif]-->
<!-- MSIE (Microsoft Internet Explorer) будет использовать внутренний объект -->
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab"
height="300" width="450" >
<param name="code" value="Sample2" />
<param name="archive" value="Sample2.jar" />
<strong>
Этот браузер не имеет Java-плагина.
<br />
<a href="http://java.sun.com/products/plugin/downloads/index.html">
Скачайте по ссылке самую последнюю версию Java-плагина.
</a>
</strong>
</object>
<!--[if !IE]>
</object>
<![endif]-->

Этот код работает в MSIE 6, браузерах семейства Mozilla и других стандарто-ориентированных браузерах, также код проходит проверку на соответствие спецификациям HTML 4.01 transitional и HTML 4.01 strict.

Пояснение

Как видно из примеров, основная идея это использование вложенных элементов 'OBJECT'.

Согласно спецификации: HTML 4.01, Section 13.3.1 Rules for rendering objects
Браузер должен интерпретировать элемент 'OBJECT' в соответствии с нижеследующими правилами:

  1. Браузер должен попытаться отобразить объект. Он не должен отображать содержимое элемента, но должен прочитать его на предмет нахождения специальных элементов 'PARAM' или 'MAP'.
  2. Если браузер не может отобразить объект по какой-либо причине (запрещено в конфигурации, нехватка ресурсов, другая платформа и т.д.) он должен попытаться отобразить его содержимое.

...
Значительной особенностью механизма отображения элемента 'OBJECT' является возможность указания альтернативного объекта; каждому вложенному объявлению <object></object> можно указать другой тип данных (другой объект). Если браузер не может отобразить внешний 'OBJECT', он пытается отобразить содержимое элемента, которым может являться ещё один элемент 'OBJECT' и т.д.

MSIE вызывает Java-плагин через управляющий элемент ActiveX. Управляющий элемент с идентификатором "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" заставляет браузер использовать самую новую версию Java-плагина, установленную на компьютере пользователя. Иногда пользователи MSIE 6 имеют несколько установленных версий плагина.

Другая идея состоит в использовании условных комментариев Internet Explorer-а, таким образом MSIE не увидит внешний объект. Иначе он попытается отобразить оба объекта (MSIE 6 ведёт себя не в соответствии со спецификацией HTML 4.01). Firefox и другие браузеры будут использовать внешний 'OBJECT'.

Дополнительные возможности устранения проблем с Java-плагином

  • Использование codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-windows-i586.cab" позволяет MSIE предложить пользователю установить плагин версии 1.5.0, который браузер скачает с java.sun.com, если на компьютере пользователя нет плагина, либо его версия старше, чем необходимо для запуска апплета.
  • Cодержимое внутреннего элемента 'OBJECT':
     <strong>
    Этот браузер не имеет Java-плагина.
    <br>
    <a href="http://java.sun.com/products/plugin/downloads/index.html">
    Скачайте по ссылке самую последнюю версию Java-плагина.
    </a>
    </strong>
    подскажет пользователям Firefox и других (не MSIE) браузеров, где можно скачать последнюю версию Java-плагина в случае, если он не установлен. Если же он установлен, но его версия старше, чем необходимо, то апплет работать не будет, однако, к сожалению, попытка отобразить объект будет считаться удачной и браузер не перейдёт к внутреннему объекту. Поэтому на странице перед апплетом всегда должно быть пояснение для пользователя, что делать, если апплет не работает.
Условные комментарии MSIE позволяют скрыть фрагменты кода от браузера Internet Explorer версии 5 и выше. Описание и синтаксис можно посмотреть на сайте Microsoft - About Conditional Comments.
Литература
  1. Using Web Standards in your Web Pages
  2. (Multiple Browser Supported) Java applet using XHTML 'object' tag