[英]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之后看到一个安全对话框,但像以前一样,它默认会拒绝请求。
我认为该库具有我可以找到的最全面的文档和实现,并且运行良好
还有一个名为BrowserHawk的商业产品。
http://www.cyscape.com/products/bhawk/workshop/detectjava.aspx?bhcp=1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.