确定客户端浏览器是否安装了Java和可以启动小程序
题
我开发.aspx页,其上的按钮(我使用的<applet>
标签)用户点击后最终将启动一个小应用程序。所以,我想如果Java启用/安装在用户的浏览器来检测。
我使用navigator.javaEnabled()方法。然而,尽管这是工作的罚款在IE7,它返回的Firefox 3.0.12不一致的结果(不知道不同的浏览器),有时说Java是启用(它是),然后运行该小程序后再回来了小程序的这个页面时,它会报告错误。如果我关闭Firefox,然后返回到小程序启动页面,navigator.javaEnabled()将再次上报真(正确)。
有没有什么是确定此不一致的行为或navigator.javaEnabled()不要做Java小程序检查的最佳方式?
预先感谢。
解决方案
请方法
public boolean isRunning() { return true; }
现在创建applet:
<applet src=".../yourapplet.jar" id="someId">
和现在在一些辅助功能包裹此代码
try {
var x = document.getElementById('someId').isRunning()
return x;
} catch(e) {
return false;
}
为什么这个工程?如果小程序运行时,它会返回true。如果小程序不运行或不支持的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。 即用户1.6.0.10你可以参考1.6.0.1,但不能去在1.5.X什么 虽然我觉得我记得1.6.0.11后看到一个安全对话框弹出,像以前它只是默认拒绝请求。
有也被称为BrowserHawk市售品。
http://www.cyscape.com/products /bhawk/workshop/detectjava.aspx?bhcp=1
我觉得这个lib中拥有最全面的文档和实施,我能找到和工作得很好。