Определить версию Java с помощью JavaScript

Есть ли надежный способ определить, какая версия Java установлена ​​на клиентском компьютере, с помощью JavaScript?


person Community    schedule 13.01.2009    source источник
comment
Ознакомьтесь с решением здесь. Работает как шарм (по крайней мере, на локальной машине, но я не тестировал его в разных средах).   -  person    schedule 20.07.2010


Ответы (8)


Ознакомьтесь с кодом в Java Deployment Toolkit < / а>.

person Rich Apodaca    schedule 13.01.2009
comment
Если кто-то снова столкнется с этим, обратите внимание, что у инструментария есть серьезный недостаток: он возвращает самую высокую версию Java, установленную на машине, а не самую высокую версию, которая фактически запускается (в IE, во всяком случае). В частности, если у вас установлены и Sun JRE, и MSJVM, набор инструментов сообщит о версии Sun JRE, даже если она отключена, и браузер будет фактически запускать MSJVM. Ссылка Адама Беллера, приведенная ниже, кажется более надежной, хотя и менее чистой, поскольку требует запуска реального апплета. - person Dan; 20.11.2009
comment
Обновление: эта ссылка теперь не работает. Похоже, ссылку Адама Беллера нужно использовать. - person Ryan Kinal; 03.04.2012

Согласно тому факту, что мы находим эту страницу с помощью Google, просто чтобы помочь следующим ребятам найти это.

Установлена ​​ли Java?

navigator.javaEnabled()

http://www.w3schools.com/jsref/met_nav_javaenabled.asp

Какая версия Java установлена?

<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var versions = deployJava.getJREs();
</script>

http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html#deplToolkit

Это лучший способ найти версию Java с JavaScript, но используйте его осторожно, потому что определение его версии действительно зависит от ОС / браузера, а в старой версии браузера или в последнем браузере со старой установленной Java он не будет работать как ожидал. Потратьте время на проведение реальных тестов, прежде чем использовать его в производственной среде.

person sarlak    schedule 05.08.2011
comment
Это не дает никакой информации о версии (о которой идет речь). - person Felix Kling; 06.08.2011
comment
Вы правы, я не ответил, где я думал, что я был. Исправил мой ответ. - person sarlak; 17.08.2011
comment
Это просто дубликат предыдущего ответа Rich Apodaca, и комментарий Дэна к нему применим. - person T.J. Crowder; 17.02.2012
comment
Да ... просто сделайте это более понятным для тех, кто не понимает всего на странице, которую он дал, или если когда-нибудь ссылка умирает ... или просто чтобы сэкономить время для следующих парней, которые найдут эту страницу через Google. Я не хотел украсть хороший ответ. - person sarlak; 24.05.2012
comment
@ T.J.Crowder Первые 0,02% пользователей изучают философию Stack Overflow о том, как сделать Интернет лучше. Это то, что вы не видите каждый день. - person Patrick McElhaney; 14.11.2012
comment
@PatrickMcElhaney: Правильный способ улучшить чей-то ответ - это улучшить чей-то ответ. (И ответ, каким он был во время этого комментария, не был ответом, которым он является сейчас.) - person T.J. Crowder; 14.11.2012
comment
@ T.J.Crowder Я не уверен, что в то время у сарлака были какие-либо варианты, кроме публикации нового ответа. Он не мог опубликовать комментарий и, вероятно, не мог предложить правку. - person Patrick McElhaney; 14.11.2012
comment
@PatrickMcElhaney: Верно. И есть причина для этих ограничений для новых пользователей. Но я не собираюсь затягивать обсуждение. :-) Лучший, - person T.J. Crowder; 14.11.2012
comment
Это не сработает, если j в deployJava не пишется с заглавной буквы, просто к сведению. - person Christopher Bruce; 12.02.2014

Поиск в Google для

detect "java version" using javascript

дает несколько результатов, этот может пригодиться. По сути, он пытается загрузить апплет Java, а затем JavaScript запрашивает апплет.

person Adam Bellaire    schedule 13.01.2009
comment
По иронии судьбы, эта страница теперь является первым результатом поиска в Google для detect "java version" using javascript - person kingjeffrey; 20.04.2010

Вы можете использовать библиотеку PluginDetect отсюда: http://www.pinlady.net/PluginDetect/

person Sarel Botha    schedule 13.01.2009

Версия Java:

/**
 * @return NULL if not version found. Else return some things like: '1.6.0_31'
 */
var JavaVersion: function()
{
  var result = null;
  // Walk through the full list of mime types.
  for( var i=0,size=navigator.mimeTypes.length; i<size; i++ )
  {
      // The jpi-version is the plug-in version.  This is the best
      // version to use.
      if( (result = navigator.mimeTypes[i].type.match(/^application\/x-java-applet;jpi-version=(.*)$/)) !== null )
          return result[1];
  }
  return null;
}

Является ли Java и включена ли Java:

var IsJava: function()
{
  return typeof(navigator.javaEnabled) !== 'undefined' && navigator.javaEnabled();
}

Эти функции работают в Opera, Firefox, Chrome. У меня нет IE.

person ImmortalPC    schedule 14.06.2012
comment
JavaVersion не работает под MSIE, так как navigator.mimeTypes всегда пуст в этом браузере (проверено на MSIE7) - person Julien Kronegg; 04.09.2012
comment
navigator.mimeTypes, похоже, присутствует в IE11 - person mopo922; 15.03.2017

Логика обнаружения не работает в IE32 на Windows7-64. Он не смог обнаружить ранее установленную версию java.

Что ж, после дальнейшего чтения, Java Deployment Toolkit в Windows использует ActiveX classid, который может представлять ваше приложение хакерам (см. http://www.kb.cert.org/vuls/id/886582). Я вышел.

person user942973    schedule 13.09.2011

Если вы используете Google Analytics, этот пост может быть полезным (подробнее см. ветку форума) .

person Michael Myers    schedule 13.01.2009

Я обнаружил, что решение JavaScript, предоставляемое Java Deployment Toolkit, выдает ошибку ... «deployJava.do_initialize не является функцией».

Одно из решений, которое я активно использовал в течение многих лет и которое работает во всех браузерах, - это апплет отображения версии Java. К сожалению, сайт первоначального автора, похоже, исчез, но вы можете загрузить копию апплета отображения версии Java здесь.

person WilliamK    schedule 12.12.2012