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




Посмотрите код в Набор инструментов для развертывания Java.
Если кто-то снова столкнется с этим, обратите внимание, что у инструментария есть серьезный недостаток: он возвращает самую высокую версию Java, установленную на машине, а не самую высокую версию, которая действительно запускается (в IE, во всяком случае). В частности, если у вас установлены и Sun JRE, и MSJVM, инструментарий сообщит о версии Sun JRE, даже если она отключена, и браузер фактически будет запускать MSJVM. Ссылка Адама Беллера ниже кажется более надежной, хотя и менее «чистой», потому что для нее требуется запуск реального апплета.
Обновление: эта ссылка теперь не работает. Похоже, ссылку Адама Беллера нужно использовать.
Более того, этот метод заставляет панель предупреждений безопасности MSIE gold появляться под MSIE7 с Sun JDK до 1.6.0_2 (со средне-высокими настройками безопасности). См. pinlady.net/PluginDetect для версии, которая не вызывает предупреждений безопасности (и поддерживается).
Поиск в Google для
detect "java version" using javascript
дает несколько результатов, Вот этот похоже может быть полезным. По сути, он пытается загрузить апплет Java, а затем JavaScript запрашивает апплет.
По иронии судьбы, эта страница теперь является первым результатом поиска в Google для detect "java version" using javascript.
Вы можете использовать библиотеку PluginDetect отсюда: http://www.pinlady.net/PluginDetect/
Если вы используете Google Analytics, эта почта может оказаться полезным (см. ветка форума для более подробной информации).
Согласно тому факту, что мы находим эту страницу с помощью Google, просто чтобы помочь следующим ребятам найти это.
navigator.javaEnabled()
http://www.w3schools.com/jsref/met_nav_javaenabled.asp
<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 он не будет работать как ожидал. Потратьте время на проведение реальных тестов, прежде чем использовать его в производственной среде.
Это не дает никакой информации о версии (о которой идет речь).
Вы правы, я не ответил, где я думал, что я был. Исправил мой ответ.
Это просто дубликат Предыдущий ответ Rich Apodaca, и комментарий Дэна к нему применим.
Да ... просто сделайте это более понятным для тех, кто не понимает всего на странице, которую он дал, или если когда-нибудь ссылка умирает ... или просто чтобы сэкономить время для следующих парней, которые найдут эту страницу через Google. Я не хотел украсть хороший ответ.
@ T.J.Crowder Первые 0,02% пользователей изучает философию Stack Overflow о том, как сделать Интернет лучше. Это то, что вы не видите каждый день.
@PatrickMcElhaney: Правильный способ улучшить чей-то ответ - это улучшить чей-то ответ. (И ответ, каким он был во время этого комментария, не был ответом, которым он является сейчас.)
@ T.J.Crowder Я не уверен, что в то время у сарлака были какие-либо варианты, кроме публикации нового ответа. Он не мог опубликовать комментарий и, вероятно, не мог предложить правку.
@PatrickMcElhaney: Верно. И есть причина для этих ограничений для новых пользователей. Но я не собираюсь затягивать обсуждение. :-) Лучший,
Это не сработает, если j в deployJava не пишется с заглавной буквы, просто к сведению.
Логика обнаружения не работает в IE32 на Windows7-64. Он не смог обнаружить ранее установленную версию java.
Что ж, после дальнейшего чтения, Java Deployment Toolkit в Windows использует ActiveX classid, который может представлять ваше приложение хакерам (см. http://www.kb.cert.org/vuls/id/886582). Я вышел.
Версия 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.
JavaVersion не работает под MSIE, так как navigator.mimeTypes всегда пуст в этом браузере (проверено на MSIE7)
navigator.mimeTypes, похоже, присутствует в IE11
Я обнаружил, что решение JavaScript, предоставляемое Java Deployment Toolkit, выдает ошибку ... «deployJava.do_initialize не является функцией».
Одно из решений, которое я активно использовал в течение многих лет и которое работает во всех браузерах, - это Апплет отображения версии Java. К сожалению, исходный сайт автора, похоже, исчез, но вы можете скачать копию Апплет отображения версии Java здесь.
Ознакомьтесь с решением здесь. Работает как шарм (по крайней мере, на локальной машине, но я не тестировал его в разных средах).