Позволяет указать компилятору пропустить вызов метода, отмеченного атрибутом при определенных условиях (#define).
Тот факт, что вызов метода опущен, также означает, что его параметры не оцениваются. Это очень удобно, и это то, что позволяет вам вызывать дорогостоящие функции проверки в Debug.Assert () и не беспокоиться о том, что они замедляют сборку релиза.
Сделайте в своем апплете метод
public boolean isRunning() { return true; }
Теперь создайте апплет:
<applet src=".../yourapplet.jar" id="someId">
А теперь оберните этот код какой-нибудь вспомогательной функцией
try {
var x = document.getElementById('someId').isRunning()
return x;
} catch(e) {
return false;
}
Почему это работает? Если апплет запустится, он вернет true. Если апплет не запускается или Java не поддерживается, вы получите исключение и получите false.
Вы также можете попробовать использовать тег объекта.
С его помощью вы можете определить, какая версия java установлена, и предложить пользователю загрузить ее, если она не существует.
Это образец тега объекта, взятый из приложения, над которым я работаю, сложности JRE потребовали от нас запустите 1.4.2_03 для совместимости с другими приложениями.
<object classid="clsid:CAFEEFAC-0014-0002-0003-ABCDEFFEDCBA" id="MyApplet"
name="MyApplet" width="4" height="4"
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2_03-windows-i586.cab#Version=1,4,2,03">
Classid указывает версию Java, которую вы хотите загрузить, вы можете установить ее для определенной JRE, определенного семейства, например 1.4.X или любой другой последней версии.
Кодовая база определяет, куда направляется пользователь, если он не соответствует тому, что установлен classid.
Обратите внимание, что если на клиенте установлена версия 1.5 или выше, вы не можете ссылаться на более старую JRE из-за ограничений безопасности. Вы можете переопределить это с помощью параметра реестра в Windows, но я бы не рекомендовал это. т.е. у пользователя есть 1.6.0.10, вы можете ссылаться на 1.6.0.1, но не можете перейти ни к чему в 1.5.X Хотя мне кажется, я помню, как после 1.6.0.11 всплывает диалоговое окно безопасности, в котором, как и раньше, запрос по умолчанию отклоняется.
Существует также коммерческий продукт под названием BrowserHawk.
http://www.cyscape.com/products/bhawk/workshop/detectjava.aspx?bhcp=1