Определите, есть ли в браузере клиента установлен Java и можно ли запускать апплеты - PullRequest
6 голосов
/ 24 июля 2009

Я разрабатываю страницу .aspx, которая в конечном итоге запустит апплет после нажатия пользователем кнопки (я использую тег <applet>). Итак, я хотел бы определить, включена ли / установлена ​​java в браузере пользователя.

Я использую метод navigator.javaEnabled (). Однако, несмотря на то, что это нормально работает в IE7, он возвращает противоречивые результаты в Firefox 3.0.12 (не знаю о разных браузерах), иногда говоря, что java включен (что это такое), а затем после запуска апплета иесли снова выйти из апплета на эту страницу, он выдаст сообщение false. Если я закрою firefox и вернусь на страницу запуска апплета, navigator.javaEnabled () снова сообщит true (правильно).

Есть ли что-либо, что определяет это противоречивое поведение, или является navigator.javaEnabled () не лучшимспособ проверки Java-апплета?

Заранее спасибо.

Ответы [ 4 ]

10 голосов
/ 24 июля 2009

Создайте в своем апплете метод

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.

1 голос
/ 01 августа 2009

Вы также можете попробовать использовать тег объекта.

С его помощью вы можете определить, какая версия 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, но я бы не рекомендовал его.

Я считаю, что защита настроена, поэтому вы можете ссылаться только на более старую JRE в той же семье. т. е. у пользователя 1.6.0.10, вы можете ссылаться на 1.6.0.1, но не можете перейти к чему-либо в 1.5.X Хотя я думаю, что помню всплывающее диалоговое окно безопасности после 1.6.0.11, где, как и прежде, он просто отклонил бы запрос по умолчанию.

0 голосов
/ 28 декабря 2012

Я думаю, что эта библиотека имеет наиболее полную документацию и реализацию, которую я мог найти, и работает довольно хорошо

http://www.pinlady.net/PluginDetect/Java/

0 голосов
/ 14 мая 2010

Существует также коммерческий продукт под названием BrowserHawk.

http://www.cyscape.com/products/bhawk/workshop/detectjava.aspx?bhcp=1

...