2009-07-24 14 views
6

Estoy desarrollando una página .aspx que finalmente lanzará un applet después de que el usuario haga clic en un botón (estoy usando la etiqueta <applet>). Entonces, me gustaría detectar si java está habilitado/instalado en el navegador del usuario.Determine si el navegador del cliente tiene Java instalado y puede iniciar los applets

Estoy utilizando el método navigator.javaEnabled(). Sin embargo, a pesar de que esto está funcionando bien en IE7, está devolviendo resultados incoherentes en Firefox 3.0.12 (no sé sobre diferentes navegadores), a veces diciendo que java está habilitado (que es), y luego después de iniciar el applet y al volver a salir del applet de esta página, se informará que es falso. Si cierro Firefox y regreso a la página de inicio del applet, navigator.javaEnabled() informará verdadero (correctamente).

¿Hay algo que determine este comportamiento incoherente o es navigator.javaEnabled() no la mejor manera de hacer la comprobación del applet de java?

Gracias de antemano.

Respuesta

10

hacer en su applet de un método

public boolean isRunning() { return true; } 

ahora, puede crear un applet:

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

Y ahora envolver el código de alguna función auxiliar

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

Por qué esto funciona? Si el applet se ejecuta, devolverá verdadero. Si el applet no se ejecuta o Java no es compatible, obtendrá una excepción, por lo que recibirá un mensaje falso.

+0

Gracias Marcin por la respuesta. Sin embargo, si es posible, no me gustaría ejecutar un applet para la prueba. Tal vez recurriré a este método si no encuentro otra solución. El método que estoy usando funciona bien también en Google Chrome, pero cuando abro el applet con Firefox, luego lo cierro y vuelvo a la misma página, el navegador.javaEnabled comienza a devolver falso. ¡Muy extraño! –

+0

La única manera de estar 100% seguros de que Java se puede ejecutar es llamar al código Java. Si no lo desea, haga que sea muy visible para el usuario que, si algo no sucede en X segundos, lo más probable es que necesite instalar Java. –

+0

@Marcin, ¿está disponible para todos los navegadores + JVM o es algo que solo funciona en ciertas combinaciones? –

1

También podría intentar usar la etiqueta de objeto.

Con él puede determinar qué versión de java está instalada y solicitar al usuario que la descargue si no existe.

Esta es una etiqueta de objeto de muestra tomada de una aplicación en la que trabajo, las complicaciones de JRE requieren que se ejecute en 1.4.2_03 para compatibilidad con otras aplicaciones.

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

El classid especifica la versión de Java que desea cargar, se puede establecer a un JRE específico, es decir, una familia específica 1.4.X o lo que sea la versión más reciente es.

La base de código controla hacia dónde se dirige al usuario si no cumplen con lo que está configurado el classid.

Tenga en cuenta que si un cliente tiene 1.5 o superior instalado no puede hacer referencia a un JRE anterior debido a restricciones de seguridad, puede anular esto a través de una configuración de registro en Windows, pero no lo recomendaría.

Creo que la seguridad está configurada, por lo que solo puede hacer referencia a un JRE anterior en la misma familia. es decir, el usuario tiene 1.6.0.10 puede hacer referencia a 1.6.0.1 pero no puede ir a nada en 1.5.X Aunque creo que recuerdo haber visto un cuadro de diálogo de seguridad emergente después de 1.6.0.11 donde como antes, simplemente denegaría la solicitud.

Cuestiones relacionadas