Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Wari en 22 Octubre 2014, 14:48 pm



Título: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: Wari en 22 Octubre 2014, 14:48 pm
Buen día!

Les presento mi siguiente problema:

Tengo una página HTML la cual contiene un <object> que va cargando dinámicamente distintas imágenes de tipo PDF, les mostraré una parte de mi código:

Tag Object:

Código
  1. <object id="imagen" name="imagen" data="" type="application/pdf" width="850px" height="500px">
  2. alt : <a href="">documento</a>
  3. </object>

El atributo "HREF" y "DATA" los cargo dinamicamente con variables en javascript basados en una función que se ejecuta al presionar un botón, la acción que realiza el cambio es la siguiente:

Código
  1. $("#imagen").attr('href','http://192.168.1.38:8080/share/proxy/alfresco/api/node/content/'+arDocumento[x]+'')

Hasta ahí todo bien.

El problema es que necesito cambiar dinamicamente el "TYPE" de <object> para poder cargar documentos de distinta extension (word, imagen, etc.) y no sólo PDF.

Probé utilizando el mismo método:

Código
  1. $("#imagen").attr('type',arTipoDato[x]);

Pero por alguna razón no funciona.

Notas: El método en sí funciona (asignar el valor a TYPE con una variable), ya que probé con un "alert" obtener el TYPE después de modificarlo:

Código
  1. alert($("#imagen").attr('type'));

Y me entrega correctamente el tipo de dato que voy asignando. El problema es que la imagen no se muestra a pesar de asignarle el type correcto.

Probé así también:

Código
  1. $("#imagen").attr('type','application/pdf');

Y a pesar de que si se asigna el valor, la imagen o documento no se muestra. Sólo lo hace correctamente si asigno el TYPE desde el html directamente.

¿Alguna idea?

Saludos


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: T. Collins en 22 Octubre 2014, 15:36 pm
Probablemente tendrás que crear dinámicamente un <object> nuevo con el type que necesites.


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: Wari en 22 Octubre 2014, 19:58 pm
Gracias por responder!

Creo que eso apuntaría a una posible solución.

De todas formas me surge otro problema, y es que no logro visualizar los documentos de tipo DOCX o DOC, he probado aplicando el TYPE "application/msword" o application/vnd.openxmlformats-officedocument.wordprocessingml.document pero no se visualiza nada.

¿Alguna idea?


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: MinusFour en 22 Octubre 2014, 20:10 pm
Creo que para eso va a depender si tu navegador puede interpretar ese mime type en especifico. ¿Lo has probado desde Internet Explorer? No estoy muy seguro de que hace la subetiqueta type pero lo mas probable es que simplemente haga un override de la respuesta content-type del servidor.


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: Wari en 22 Octubre 2014, 21:48 pm
Sí, he probado en Chrome e IE obteniendo el mismo resultado  :-[


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: JorgeEMX en 24 Octubre 2014, 07:15 am
Gracias por responder!

Creo que eso apuntaría a una posible solución.

De todas formas me surge otro problema, y es que no logro visualizar los documentos de tipo DOCX o DOC, he probado aplicando el TYPE "application/msword" o application/vnd.openxmlformats-officedocument.wordprocessingml.document pero no se visualiza nada.

¿Alguna idea?

Acaso eso es posible? Que yo sepa no hay ninguna forma de abrir Word/Excel/Etc en tu navegador.


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: Pablo Videla en 24 Octubre 2014, 15:45 pm
http://api.jquery.com/prop/

Citar
Note: Attempting to change the type property (or attribute) of an input element created via HTML or already in an HTML document will result in an error being thrown by Internet Explorer 6, 7, or 8.

Ve si te funciona

Código
  1. $("#id").prop('type'); // asi lo obtienes
  2. $("#id").prop('type',valor); // asi lo cambias
  3.  

No lo he probado, pero si he usado la funcion prop pero no para un caso como el tuyo, espero que te sirva, saludos.


Título: Re: Cambiar atributo "TYPE" de tag <object> en HTML con JS
Publicado por: MinusFour en 24 Octubre 2014, 16:28 pm
Acaso eso es posible? Que yo sepa no hay ninguna forma de abrir Word/Excel/Etc en tu navegador.


No estoy seguro de las nuevas instancias de I.E. y Word pero si se ha podido hacer eso en un pasado:

http://shaunakelly.com/word/sharing/opendocinie.html