【问题标题】:Detect version of Java using JavaScript使用 JavaScript 检测 Java 版本
【发布时间】:2010-10-01 05:00:24
【问题描述】:

是否有可靠的方法来检测使用 JavaScript 的客户端机器上安装了哪个版本的 Java?

【问题讨论】:

  • 查看解决方案here。像魅力一样工作(至少在本地机器上,但我没有在不同的环境中测试它)。

标签: java javascript xhtml


【解决方案1】:

根据我们通过 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

这是我发现使用 JavaScript 查找 Java 版本的最佳方法,但请谨慎使用,因为它的版本检测实际上取决于操作系统/浏览器,并且在旧浏览器版本或安装了旧 Java 的最新浏览器上,它会不能按预期工作。花点时间进行实际测试,然后再将其用于生产环境。

【讨论】:

  • 这并没有提供关于版本的任何信息(问题是关于)。
  • 你说得对,我没有回答我以为我在哪里。修正了我的答案。
  • 这只是Rich Apodaca's previous answer 的复制品,Dan 对此的评论适用。
  • 是的......只是让那些不理解他提供的页面上的所有内容的人更加明确,或者如果链接失效......或者只是为了节省一些时间给下一个人谁通过 Google 找到此页面。我不是故意偷一个人的好答案。
  • @T.J.Crowder 前 0.02% 的用户第一次接受 Stack Overflow 让互联网变得更好的哲学的教育。这是你每天都看不到的东西。
【解决方案2】:

查看Java Deployment Toolkit中的代码。

【讨论】:

  • 如果有人再次遇到这种情况,请注意该工具包有一个重大缺陷:它返回机器上安装的最高版本的 Java,而不是实际可运行的最高版本(在 IE 中,好歹)。具体来说,如果您同时安装了 Sun JRE 和 MSJVM,则该工具包将报告 Sun JRE 版本,即使它已被禁用,并且浏览器将实际运行 MSJVM。下面的 Adam Bellaire 的链接似乎更可靠,尽管不太“干净”,因为它需要运行一个实际的小程序。
  • 更新:此链接现已损坏。看起来 Adam Bellaire 的链接将成为可用的链接。
  • 此外,此方法在1.6.0_2之前的Sun JDK(具有中高安全设置)的MSIE7下弹出MSIE黄金安全警告栏。请参阅pinlady.net/PluginDetect 以获取不会引发安全警告(并得到维护)的版本。
【解决方案3】:

谷歌搜索

detect "java version" using javascript

产生几个结果,this one 看起来可能有用。本质上,它会尝试加载 Java 小程序,然后 JavaScript 会询问小程序。

【讨论】:

  • 讽刺的是,这个页面现在是谷歌上detect "java version" using javascript的第一个搜索结果
【解决方案4】:

您可以从这里使用 PluginDetect 库: http://www.pinlady.net/PluginDetect/

【讨论】:

    【解决方案5】:

    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 中
    【解决方案6】:

    检测逻辑在 Windows7-64 上的 IE32 中不起作用。它无法检测到它之前安装的 java 版本。

    好吧,在进一步阅读之后,Windows 上的 Java 部署工具包使用 ActiveX classid,这可能会将您的应用程序暴露给黑客(请参阅http://www.kb.cert.org/vuls/id/886582)。我出去了。

    【讨论】:

      【解决方案7】:

      如果您使用 Google Analytics,this post 可能会有所帮助(有关详细信息,请参阅forum thread)。

      【讨论】:

        【解决方案8】:

        我发现Java部署工具包提供的JavaScript解决方案报错...“deployJava.do_initialize is not a function”。

        我多年来广泛使用并适用于所有浏览器的一个解决方案是 Java 版本显示小程序。不幸的是,原作者的网站似乎已经消失了,但您可以在此处下载Java Version Display Applet 的副本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-10
          • 2012-07-03
          • 1970-01-01
          相关资源
          最近更新 更多