Foros del Web » Programando para Internet » Javascript »

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

Estas en el tema de Cambiar atributo "TYPE" de tag <object> en HTML con JS en el foro de Javascript en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 21/10/2014, 14:30
Avatar de Wart  
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Cambiar atributo "TYPE" de tag <object> en HTML con JS

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 HTML:
<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:
$("#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:
$("#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:
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:
$("#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
  #2 (permalink)  
Antiguo 23/10/2014, 10:35
Avatar de dAvidcA  
Fecha de Ingreso: septiembre-2009
Ubicación: /home/dev/
Mensajes: 73
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Cambiar atributo "TYPE" de tag <object> en HTML con JS

Buen día Wart, en este caso se puede utilizar los métodos clone() y replaceWith() de jQuery.

Hice este ejemplo en el que al presionar varias veces el botón "Cambiar", el tag Object se transforma en varias cosas: PDF, IMG, SWF, HTML..etc

HTML
Código HTML:
Ver original
  1. <button id="probando">Cambiar</button><br/><br/>
  2. <div id="tipo"></div><br/>
  3. <object id="obj" width="500px" height="400px"></object>

JAVASCRIPT

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.     var objetoSel = 0;
  3.  
  4.     $("#probando").click(function() {
  5.         objetoSel++;
  6.         var newObject = $("#obj").clone(true);
  7.        
  8.         switch(objetoSel){
  9.             case 1:
  10.                 $("#tipo").html("PDF");
  11.                 newObject.attr("type", "application/pdf");
  12.                 newObject.attr("data", "http://nccp.athletics.ca/pdfs/course_desc/Clubcoachoutcomes.pdf");
  13.                 $("#obj").replaceWith(newObject);
  14.                 break;
  15.             case 2:
  16.                 $("#tipo").html("IMG");
  17.                 newObject.attr("type", "image/png");
  18.                 newObject.attr("data", "http://memecrunch.com/meme/2B76X/my-code-works/image.jpg");
  19.                 $("#obj").replaceWith(newObject);
  20.                 break;
  21.             case 3:
  22.                 $("#tipo").html("SWF");
  23.                 newObject.attr("type", "application/x-shockwave-flash");
  24.                 newObject.attr("data", "http://www.w3schools.com/html/bookmark.swf");
  25.                 $("#obj").replaceWith(newObject);
  26.                 break;
  27.             case 4:
  28.                 $("#tipo").html("HTML");
  29.                 newObject.attr("type", "text/html");
  30.                 newObject.attr("data", "http://www.w3schools.com/html/snippet.html");
  31.                 $("#obj").replaceWith(newObject);
  32.                 break;
  33.             default:            
  34.                 $("#tipo").html("(EN BLANCO)");
  35.                 newObject.attr("type", "");
  36.                 newObject.attr("data", "");
  37.                 $("#obj").replaceWith(newObject);
  38.                 objetoSel = 0;
  39.                 break;
  40.         }
  41.     });
  42.  
  43. });

Espero sirva.

Saludos

Etiquetas: object, type
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:45.