By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,985 Members | 1,777 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,985 IT Pros & Developers. It's quick & easy.

Could someone explain part of this function?

P: n/a
Hi
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 &&
navigator.mimeTypes["application/x-java-vm"])
{
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
}
else
{
newWindow = window.open('../nojava.html', 'newWin',
'width=420,height=250')
}

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
present!!!
Any help would be appreciated and also if it would work with Netscape(
not sure what the comment is saying)

Thanks

Nick

Jan 31 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Well technically you could just use:

window.navigator.javaEnabled();

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
simplified:

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

P: n/a
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.