Cambiar atributo "TYPE" de tag <object> en HTML con JS

Iniciado por Wari, 22 Octubre 2014, 14:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Wari

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 (html4strict) [Seleccionar]
<object id="imagen" name="imagen" data="" type="application/pdf" width="850px" height="500px">
alt : <a href="">documento</a>
</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 (javascript) [Seleccionar]
$("#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 (javascript) [Seleccionar]
$("#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 (javascript) [Seleccionar]
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 (javascript) [Seleccionar]
$("#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. Collins

Probablemente tendrás que crear dinámicamente un <object> nuevo con el type que necesites.

Wari

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?

MinusFour

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.

Wari

Sí, he probado en Chrome e IE obteniendo el mismo resultado  :-[

JorgeEMX

Cita de: 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?

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

Pablo Videla

http://api.jquery.com/prop/

CitarNote: 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 (javascript) [Seleccionar]

$("#id").prop('type'); // asi lo obtienes
$("#id").prop('type',valor); // asi lo cambias


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

MinusFour

Cita de: JorgeEMX en 24 Octubre 2014, 07:15 AM
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