Determine whether client browser has java installe

2020-02-01 02:15发布

I am developing an .aspx page which will ultimately launch an applet after the user clicks on a button (I am using the <applet> tag). So, I would like to detect if java is enabled/installed on the user's browser.

I am using navigator.javaEnabled() method. However, even though this is working fine on IE7, it is returning inconsistent results on Firefox 3.0.12 (don't know about different browsers), sometimes saying that java is enabled (which it is), and then after launching the applet and coming back out of the applet to this page again, it will report false. If I close firefox and return to the applet launching page, navigator.javaEnabled() will report true again (correctly).

Is there anything that is determining this inconsistent behaviour or is navigator.javaEnabled() not the best way to do the java applet check?

Thanks in advance.

4条回答
一纸荒年 Trace。
2楼-- · 2020-02-01 02:47

You could also try using the object tag.

With it you can determine what version of java is installed and prompt the user to download it if it does not exist.

This is a sample object tag taken from an app that I work on, JRE complications required us to run on 1.4.2_03 for compatibility with other applications.

 <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">

The classid specifies the version of Java you want to load, you can set this to a specific JRE, a specific family i.e. 1.4.X or whatever the latest version is.

The codebase controls where the user is directed if they do not meet what the classid is set to.

Note that if a client has 1.5 or higher installed you cannot reference an older JRE due to security constraints, You can override this via a registry setting in windows but I would not recommend it.

I believe the security is setup so you can only reference an older JRE in the same family. i.e. user has 1.6.0.10 you can reference 1.6.0.1 but cannot go to anything in 1.5.X Though I think I remember seeing a security dialog pop up after 1.6.0.11 where as before it would just default deny the request.

查看更多
Summer. ? 凉城
3楼-- · 2020-02-01 02:49

I think that this lib has the most comprehensive documentation and implementation that I could find and works pretty well

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

查看更多
▲ chillily
4楼-- · 2020-02-01 03:09

Make in your applet a method

public boolean isRunning() { return true; }

Now create an applet:

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

And now wrap this code in some helper function

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

Why this works? If applet runs it will return true. If applet doesn't run or Java is not supported you'll get an exception, so you'll get false.

查看更多
我欲成王,谁敢阻挡
5楼-- · 2020-02-01 03:10

There is also a commercial product called BrowserHawk.

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

查看更多
登录 后发表回答