繁体   English   中英

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

[英]Determine whether client browser has java installed and can launch applets

我正在开发一个.aspx页面,该页面最终将在用户单击按钮后启动一个applet(我正在使用<applet>标记)。 因此,我想检测是否在用户的浏览器中启用了Java或安装了Java。

我正在使用navigator.javaEnabled()方法。 但是,即使此方法在IE7上运行良好,在Firefox 3.0.12(不了解其他浏览器)上仍返回不一致的结果,有时会说已启用Java(启用了Java),然后在启动applet和再次从小程序返回到此页面,它将报告false。 如果我关闭firefox并返回到applet启动页面,则navigator.javaEnabled()将再次(正确)报告为true。

是否有任何东西可以确定这种不一致的行为,或者navigator.javaEnabled()不是执行Java Applet检查的最佳方法?

提前致谢。

在您的小程序中制作一种方法

public boolean isRunning() { return true; }

现在创建一个小程序:

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

现在,将此代码包装在一些辅助函数中

try {
  var x = document.getElementById('someId').isRunning()
  return x;
} catch(e) {
  return false;
}

为什么这样有效? 如果applet运行,它将返回true。 如果applet无法运行或不支持Java,您将收到异常,因此您将得到false。

您也可以尝试使用object标签。

使用它,您可以确定所安装的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之后看到一个安全对话框,但像以前一样,它默认会拒绝请求。

我认为该库具有我可以找到的最全面的文档和实现,并且运行良好

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM