Question

Je développe une page .aspx qui en fin de compte lancer une applet après que l'utilisateur clique sur un bouton (je suis en utilisant la balise <applet>). Donc, je voudrais vérifier si Java est activé / installé sur le navigateur de l'utilisateur.

J'utilise la méthode navigator.javaEnabled (). Cependant, même si cela fonctionne bien sur IE7, il retourne des résultats incohérents sur Firefox 3.0.12 (ne savent pas sur les différents navigateurs), en disant parfois que Java est activé (ce qui est), puis après le lancement de l'applet et revenir sur l'applet de cette page à nouveau, il fera un rapport faux. Si je ferme Firefox et revenir à la page de lancement de l'applet, navigator.javaEnabled () fera rapport vrai à nouveau (correctement).

Y at-il quelque chose qui est de déterminer ce comportement incohérent ou est navigator.javaEnabled () pas la meilleure façon de faire la vérification de l'applet java?

Merci d'avance.

Était-ce utile?

La solution

Faites dans votre applet une méthode

public boolean isRunning() { return true; }

Maintenant, créez une applet:

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

Et maintenant envelopper ce code dans une fonction d'aide

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

Pourquoi cela fonctionne? Si l'applet exécute retourne vrai. Si applet ne fonctionne pas ou Java est pas pris en charge, vous obtiendrez une exception, vous aurez faux.

Autres conseils

Vous pouvez également essayer d'utiliser la balise d'objet.

Avec elle, vous pouvez déterminer quelle version de Java est installé et invite l'utilisateur à le télécharger si elle n'existe pas.

Ceci est une balise d'objet échantillon prélevé à partir d'une application que je travaille sur, les complications nous JRE requis pour exécuter sur 1.4.2_03 pour la compatibilité avec d'autres 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">

Le classid spécifie la version de Java que vous voulez charger, vous pouvez définir à un spécifique JRE, une famille spécifique à savoir 1.4.X ou quelle que soit la dernière version est.

Les contrôles de codebase où l'utilisateur est dirigé si elles ne répondent pas ce que le classid est réglé sur.

Notez que si un client a 1.5 ou installé, vous ne pouvez pas faire référence à plus d'une ancienne JRE en raison des contraintes de sécurité, vous pouvez remplacer ce via un paramètre de registre dans les fenêtres, mais je ne le recommanderais pas.

Je crois que la sécurité est configuré de sorte que vous ne pouvez faire référence à un plus dans la même JRE famille. dire utilisateur 1.6.0.10 vous pouvez référencer 1.6.0.1 mais ne peut pas aller à quoi que ce soit dans 1.5.X Bien que je pense que je me souviens avoir vu après 1.6.0.11 une pop de dialogue de sécurité où comme avant il serait tout simplement refuser la demande par défaut.

Il y a aussi un produit commercial appelé BrowserHawk.

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

Je pense que cette lib a la plus complète et la documentation mise en œuvre que je pouvais trouver et fonctionne assez bien

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top