Problema para cargar applet java en un XUL iframe

Desarrollo de aplicaciones basadas en tecnologías Mozilla (XBL-XUL-RDF...)
jrgonzalez
Recién llegado
Recién llegado
Mensajes: 3
Registrado: Lun Mar 28, 2005 6:16 pm

Problema para cargar applet java en un XUL iframe

Mensajepor jrgonzalez » Mié Mar 30, 2005 7:04 am

Hola. Tengo un fichero html que carga un applet. Funciona perfectamente si lo abro directamente en el Mozilla 1.7.6, pero cuando intento cargarlo dentro de un iframe de XUL no funciona en absoluto.

¿Alguien tiene alguna idea de cuál puede ser el problema?

Gracias por adelantado,
Juan Ramón

PS: La aplicación XUL sobre la que estoy probando esto está instalada en el directorio chrome del usuario en el mismo Mozilla 1.7.6 en Windows, y el contenido del fichero html con el applet es:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Expires" content="0">
<title>Protein Viewer (Webmol)</title>
</head>
<body id="PDBViewerBody" bgcolor="#ffffff" leftmargin="0"
topmargin="0" marginwidth="0" marginheight="0">

<applet code="proteinViewer.class"
codebase="http://decsai.ugr.es/~jrgonzalez/test-webmol/"
width="700" height="500">

<param name="PROTEIN" value="example">
<param name="PATH" value="">
<param name="URL" value="http://decsai.ugr.es/~jrgonzalez/test-webmol/">
<param name="EXT" value="pdb">
<param name="PDB_STRING" value="">
</applet>

</body>
</html>

Avatar de Usuario
MorZilla
Lagarto
Lagarto
Mensajes: 335
Registrado: Jue Oct 21, 2004 12:54 pm
Ubicación: ¡Qué te importa! (Otra vez:)
Contactar:

Mensajepor MorZilla » Mié Mar 30, 2005 1:48 pm

Amigo, el Iframe de xul sirve sólo para incrustar documentos XUL. Para insertar documentos HTML utilizá browser. La referencia XUL de XUL Planet tiene información de cómo usarlos.
Ojalá te sea útil. ;)

jrgonzalez
Recién llegado
Recién llegado
Mensajes: 3
Registrado: Lun Mar 28, 2005 6:16 pm

Mensajepor jrgonzalez » Mié Mar 30, 2005 4:24 pm

Muchas gracias por tu respuesta, aunque según lo que he visto yo en xulplanet no hay nada que indique que el iframe o el browser sólo sirvan para documentos en XUL.

De hecho funciona perfectamente con html normal y a través de las propiedades de iframe/browser se puede averiguar de qué tipo es el documento contenido en el iframe (xul, html, etc.).

En cualquier caso, ya había probado a cambiar browser por iframe, y el resultado es el mismo, es decir, el applet sólo se carga cuando se abre el fichero html por separado y no dentro del iframe. Cualquier otro elemento del html (un h1 por poner un ejemplo) sí que funciona también dentro del iframe, pero el applet no. Se me ocurre que podría ser algún tema de permisos, pero no sé ni cuáles ni dónde habría que cambiarlos. De todas formas, con cualquier forma de incluir un applet java en un documento xul me valdría, no tiene que ser necesariamente dentro de un iframe, si alguien lo ha conseguido agradecería cualquier ejemplo.

Muchas gracias,
Juan Ramón

Avatar de Usuario
MorZilla
Lagarto
Lagarto
Mensajes: 335
Registrado: Jue Oct 21, 2004 12:54 pm
Ubicación: ¡Qué te importa! (Otra vez:)
Contactar:

Mensajepor MorZilla » Jue Mar 31, 2005 3:14 pm

Cuando el Applet no se muestra, ¿Qué aparece en pantalla?
¿Un rectángulo gris o blanco con un mensaje?

jrgonzalez
Recién llegado
Recién llegado
Mensajes: 3
Registrado: Lun Mar 28, 2005 6:16 pm

Mensajepor jrgonzalez » Vie Abr 01, 2005 6:59 am

No aparece nada, simplemente sale en pantalla cualquier código html anterior al applet, cualquier código posterior, y un hueco totalmente vacío en lugar del applet (lo único que se conserva es que el hueco vacío es del tamaño que tendría el applet si saliera).

Avatar de Usuario
MorZilla
Lagarto
Lagarto
Mensajes: 335
Registrado: Jue Oct 21, 2004 12:54 pm
Ubicación: ¡Qué te importa! (Otra vez:)
Contactar:

Mensajepor MorZilla » Sab Abr 02, 2005 2:42 pm

Mejor enviame esos archivos. Mi e-mail es morzilla@argentina.com
Si tengo los archivos te puedo dar más ayuda o, tal vez, la solución. :-)

Invitado

Solución

Mensajepor Invitado » Lun Abr 04, 2005 9:42 am

El código del html era el que puse en el primer post, y era válido en el sentido de que cargaba el applet de un dirección web existente (ahora ya no, porque acabo de borrarla), y como fichero xul para incluir el applet ya digo que me valía cualquier cosa, pero bueno, en realidad ya he descubierto el problema, que comparto aquí para quien le pueda servir de ayuda.

Al parecer, al cargar un applet, el mozilla lo que hace es algo así como llamar al plugin de java con la url del applet que debe cargar. El problema estaba en que al ser una aplicación XUL instalada en el chrome (del usuario), como dirección base del documento le daba una url del tipo chrome:// aunque no se pusiera en el documento, es decir, que aunque yo lo que tenía era un fichero en el content con la línea:
<iframe src="applet.html">

el mozilla enviaba al plugin chrome://myApp/content/applet.html y eso hacía que el plugin fallara en una función que se llamaba setDocumentBase o algo así (no recuerdo exactamente).

La solución pasa por en evitar que se use una dirección del chrome para el documento html que contiene el applet, usando una dirección larga del tipo file://, aunque aquí el problema está en que dado que el directorio chrome del usuario varía con el nombre de usuario e incluso con la reinstalación de Mozilla, esa dirección no es siempre igual, con lo cual se hace necesario asignar el source del iframe mediante un script, lo que en mi caso ha sido algo tal que así:

var DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1", "nsIProperties");
var path = (new DIR_SERVICE()).get("UChrm", Components.interfaces.nsIFile).path;
var appletPath;

// Determinar el separador de directorio
if (path.search(/\\/) != -1)
{
appletPath = path + "\\myApp\\content\\applet.html"
}
else
{
appletPath = path + "/myApp/content/applet.html"
}

// Cargar el applet en el iframe
var appletFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
appletFile.initWithPath(appletPath);
var appletURL = Components.classes["@mozilla.org/network/protocol;1?name=file"].createInstance(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromFile(appletFile);
var appletFrame = document.getElementById("appletFrame");
appletFrame.setAttribute("src", appletURL);

Saludos,
Juan Ramón

Avatar de Usuario
galio
Gran Mozilla
Gran Mozilla
Mensajes: 17288
Registrado: Dom Sep 14, 2003 1:22 am
Ubicación: Argentina
Contactar:

Mensajepor galio » Mar Abr 05, 2005 2:56 am

Me alegro que lo hayas podido solucionar, y gracias por compartir la solución con nosotros ;).

YolandaNE

Re: Problema para cargar applet java en un XUL iframe

Mensajepor YolandaNE » Mié May 21, 2008 7:43 am

Hola, Mi nombre es Yolanda.

Estuve leyendo en el foro tu problema para insertar un applet dentro de una página XUL. Pues bien, en mi caso no necesito insertar dentro del XUL la página html que contiene el applet sino simplemente éste último, cosa que como es obvio, aún no he conseguido.

No se si habrás oido hablar de jupload de java, que permite la subida de directorios al servidor. Pues eso es lo que estoy intentando embeber dentro de una página XUL sin resultado. NO se si me podrás ayudar.

EL código que tengo dentro del xul es similar al utilizado cuando se quiere embeber un applet dentro de un html. No se si es ahí donde estoy equivocada, por eso te pido que le eches un vistado, para ver si me puedes ayudar. Lo que me sale es una pantallita cuadrada en lugar del applet y al abrir la consola de java me dice lo siguiente:

java.lang.ClassNotFoundException: com.smartwerkz.jupload.classic.JUpload
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Entiendo que es que no encuentra la ubicación de : com.smartwerkz.jupload.classic.JUpload. Sin embargo, me creo una página html y el applet me lo carga bien. Pero cuando intento insertar el applet dentro de XUL, es cuando me da problemas.
¿Alguna sugerencia? Te pongo aquí abajo el código en XUL de la integración del applet a ver si me puedes echar una mano indicandome que es lo que tengo mal.
<html:applet
title="JUpload"
Name="JUpload"
code="com.smartwerkz.jupload.classic.JUpload"
codebase="."
archive="dist/jupload.jar,
dist/commons-codec-1.3.jar,
dist/commons-httpclient-3.0-rc4.jar,
dist/commons-logging.jar,
dist/skinlf/skinlf-6.2.jar"
width="640"
height="480"
mayscript="mayscript"
alt="JUpload by http://www.jupload.biz">
<html:param name="Config" value="cfg/jupload.demo.config"/>
</html:applet>

Muchas gracias por adelantado,

Saludos, Yolanda


Volver a “Desarrollo Mozilla”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado