469,349 Members | 1,577 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,349 developers. It's quick & easy.

Could someone explain part of this function?

I have managed to Plagiarize and modify a piece of script that checks
to see if JAVA is installed on the users pc:

function javaInstalled()
result = false;
if (navigator.mimeTypes &&
result = navigator.mimeTypes["application/x-java-vm"].enabledPlugin;
else if (document.all && (navigator.appVersion.indexOf("Mac")==-1))
// IE Windows only -- check for ActiveX control, have to hide code
in eval from Netscape (doesn't like try)
eval ('try {var xObj = new ActiveXObject("Javaplugin");if
(xObj) result = true; xObj = null; } catch (e) {}');
return result;

if (javaInstalled())
//do nothing
newWindow = window.open('../nojava.html', 'newWin',

I have tried it on a machine that doesn't have JAVA installed and it
works exactly as i want it to. I can't however figure out what the
"eval ('try {var xObj = new ActiveXObject("Javaplugin");if
(xObj) result = true; xObj = null; } catch (e) {}');"
bit means and it's importance, i know it doesn't work if its not
Any help would be appreciated and also if it would work with Netscape(
not sure what the comment is saying)



Jan 31 '06 #1
2 1537
Well technically you could just use:


but it has some issues with older Netscape browsers (
http://segal.org/macjavabugs/enabled/ )

In terms of your question: the new ActiveXObject is an IE specific
Object that allows you to access ActiveX. I donno how reliable this is
since it is ActiveX. It seems to me with more and more browser security
issues that ActiveX could be disabled or unaccessible to your scripts.

The other concern I have with your example is the fact that eval is
used. In this case it does not seem neccessary to have that statement
wrapped in eval. It seems like a slowdown. You function code be

function javaInstalled(){
// if we can quickly determine java is enable return quickly
if( window.navigator.javaEnabled() ) return true;
// if netscape style plugins check to see if java is enabled
if (navigator.mimeTypes &&
navigator.mimeTypes["application/x-java-vm"]) return true;
// if IE and not the Mac version need to check ActiveXObject
else if (document.all && (navigator.appVersion.indexOf("Mac")==-1)){
try {
// create a Java ActiveX Object
var xObj = new ActiveXObject("Javaplugin");
if (xObj) return true;
} catch (e) {}
// if we get here we haven't detected java
return false;

I added comments and added a condition on the top of the function. I
did this because the script overhead will be greatly reduced if you
don't have to create an ActiveX object at least logic suggest so ;-)

Jan 31 '06 #2
Hi Nathan
Thanks for the reply
window.navigator.javaEnabled(); doesn;t actually work because as far
as i can work out it detects if it's enabled bit doesnot check if its
installed... ( i tried it on a machine with no JAVA ( or Microsoft JVM)
). The modified code doesn't work either, as testd against the
original. Thanks for your input.

Feb 1 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

21 posts views Thread by Gactimus | last post: by
3 posts views Thread by MarcJessome | last post: by
5 posts views Thread by J Allen Horner | last post: by
2 posts views Thread by William Morgan | last post: by
3 posts views Thread by Chris H | last post: by
21 posts views Thread by phpCodeHead | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.