a better way to detect Java WebStart

So, just as I wrote that I wouldn't be posting much in future, I thought I would quickly post this little tidbit. There are various ways described online that you can use to detect if a client has Java WebStart installed. The problem is all of them require you to mix in VBScript for Internet Explorer and then use Javascript for the other browsers. There is a way you can support Internet Explorer and still use only Javascript. Check it out:

function jwsInstalled() {
    // For Internet Explorer.
    if (navigator.userAgent.indexOf('MSIE') > -1) { 
        try { 
            var jws = new ActiveXObject('JavaWebStart.isInstalled'); 
            return true; 
        } 
        catch (e) { 
            return false; 
        } 
    } 

    // Firefox is happy with "x-java-jnlp-file". For Chrome and Safari 
    // this does not work, instead I just check for "x-java-vm". 
    // If they have a recent JVM installed, then they usually also have 
    // Java WebStart installed.
            
    return navigator.mimeTypes && 
           navigator.mimeTypes.length &&
                (navigator.mimeTypes['application/x-java-jnlp-file'] != null ||
                 navigator.mimeTypes['application/x-java-vm'] != null);
}

I use this to popup a little dialog and tell users to download a new JRE if Java WebStart is not installed. It works pretty well. And yes, it's 2009 and I'm still using Java WebStart ... although I do have a good reason for it. :-)

Reply

Optional. The content of this field is kept private and will not be shown publicly.
Optional. If you want your name to link to your homepage.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Lines and paragraphs break automatically.
More information about formatting options