确定客户端浏览器是否已安装java并可以启动小程序

确定客户端浏览器是否已安装java并可以启动小程序,java,firefox,applet,navigator,Java,Firefox,Applet,Navigator,我正在开发一个.aspx页面,在用户点击一个按钮(我使用的是标签)后,该页面将最终启动一个小程序。因此,我想检测用户浏览器上是否启用/安装了java 我使用的是navigator.javaEnabled()方法。然而,尽管这在IE7上运行良好,但它在Firefox 3.0.12上返回的结果不一致(不知道不同的浏览器),有时会说java已启用(实际上是),然后在启动小程序并再次从小程序返回此页面后,它将报告false。如果关闭firefox并返回小程序启动页面,navigator.javaEnab

我正在开发一个.aspx页面,在用户点击一个按钮(我使用的是
标签)后,该页面将最终启动一个小程序。因此,我想检测用户浏览器上是否启用/安装了java

我使用的是navigator.javaEnabled()方法。然而,尽管这在IE7上运行良好,但它在Firefox 3.0.12上返回的结果不一致(不知道不同的浏览器),有时会说java已启用(实际上是),然后在启动小程序并再次从小程序返回此页面后,它将报告false。如果关闭firefox并返回小程序启动页面,navigator.javaEnabled()将再次报告true(正确)

是否有任何因素决定了这种不一致的行为,或者navigator.javaEnabled()不是执行java小程序检查的最佳方法


提前感谢。

在小程序中创建一个方法

public boolean isRunning() { return true; }
现在创建一个小程序:

<applet src=".../yourapplet.jar" id="someId">

为什么会这样?如果小程序运行,它将返回true。如果小程序不运行或Java不受支持,您将得到一个异常,因此您将得到false。

您也可以尝试使用object标记

通过它,您可以确定安装了什么版本的java,并在不存在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。 i、 e.用户拥有1.6.0.10您可以参考1.6.0.1,但不能访问1.5.X中的任何内容
尽管我记得在1.6.0.11之后,我看到一个安全对话框弹出,与以前一样,默认情况下,它会拒绝请求。

还有一个名为BrowserHawk的商业产品


我认为这个库拥有我所能找到的最全面的文档和实现,并且运行得非常好


谢谢Marcin的回答。但是,如果可能的话,我不想为测试运行小程序。如果我找不到另一个解决办法,也许我会采用这种方法。我使用的方法在Google Chrome上也可以正常工作,但是当我用Firefox打开小程序,然后关闭它并返回同一页面时,navigator.javaEnabled开始返回false。很奇怪!要100%确定Java可以运行,唯一的方法就是调用Java代码。如果您不想这样做,那么让用户非常清楚,如果X秒内没有什么事情发生,他们很可能需要安装Java。@Marcin,这是适用于所有浏览器+JVM还是只适用于某些组合?按照建议实施。谢谢,我在FF中对此解决方案有一些问题。它在其他浏览器中工作得很好,但在FF中有时不行,我不得不多次使用ctr-f5。
 <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">