我正在开发一个.aspx页面,在用户点击按钮后我将最终启动一个小程序(我正在使用<applet>
标签)。所以,我想检测是否在用户的浏览器上启用/安装了java。
我正在使用navigator.javaEnabled()方法。然而,即使这在IE7上工作正常,它在Firefox 3.0.12上返回不一致的结果(不知道不同的浏览器),有时说java已启用(它是),然后在启动applet后再次从applet返回到此页面,它将报告错误。如果我关闭firefox并返回applet启动页面,navigator.javaEnabled()将再次(正确)报告true。
是否存在确定此不一致行为的任何内容,或者navigator.javaEnabled()是否是执行Java applet检查的最佳方法?
提前致谢。
答案 0 :(得分:10)
在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不受支持,你将获得异常,所以你会得到错误。
答案 1 :(得分:1)
您也可以尝试使用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之后弹出一个安全对话框,就像以前一样,它会默认拒绝请求。
答案 2 :(得分:0)
还有一种名为BrowserHawk的商业产品。
http://www.cyscape.com/products/bhawk/workshop/detectjava.aspx?bhcp=1
答案 3 :(得分:0)
我认为这个lib有最全面的文档和实现,我可以找到并且运行良好