Foros del Web » Programando para Internet » Javascript »

funcion para imprimir un div conservando los estilos css

Estas en el tema de funcion para imprimir un div conservando los estilos css en el foro de Javascript en Foros del Web. hola a todos tengo una funcion para imprimir un div, esto me funciona bien, lo que no funciona es que al imprimir, no conserva los ...
  #1 (permalink)  
Antiguo 03/11/2015, 11:19
 
Fecha de Ingreso: septiembre-2015
Mensajes: 58
Antigüedad: 8 años, 7 meses
Puntos: 2
funcion para imprimir un div conservando los estilos css

hola a todos

tengo una funcion para imprimir un div, esto me funciona bien, lo que no funciona es que al imprimir, no conserva los estilos css de ese archivo. Consideré que creando el link sobre la funcion llamando los estilos funcionaría, pero no es así, no me carga los estilos. alguien que por favor me ayude, tengo la siguiente funcion:

Código Javascript:
Ver original
  1. function imprimir(){ //funcion para imprimir el contenido del div = panel
  2.             var objeto=document.getElementById('panel');
  3.             var ventana=window.open('','_blank');
  4.             ventana.document.write(objeto.innerHTML);
  5.             ventana.document.close();  
  6.             ventana.print();
  7.             ventana.close();
  8.            
  9.             link = ventana.createElement('link');
  10.             link.setAttribute("href", "estilo_cal.css");
  11.             link.setAttribute("rel", "stylesheet");
  12.             link.setAttribute("type", "text/css");
  13.             ventana.appendChild(link);
  14.         }
  #2 (permalink)  
Antiguo 03/11/2015, 12:12
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: funcion para imprimir un div conservando los estilos css

No es posibleya que ventana es el objeto window. Tendrás que embeber o externalizar o escribir en línea el css en la ventana abierta
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 03/11/2015, 13:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: funcion para imprimir un div conservando los estilos css

Mediante una petición asíncrona (AJAX), podrías leer el contenido del archivo externo e insertarlo como contenido de un elemento <style>.

Código Javascript:
Ver original
  1. var ventana = window.open(),
  2.     css = document.createElement("style"),
  3.     foo = document.querySelector("#id del elemento"),
  4.     ajax = function(url, elem, callback){
  5.         var xhr = new XMLHttpRequest();
  6.         xhr.open("GET", url, true);
  7.         xhr.send();
  8.         xhr.addEventListener("load", function(){
  9.             if (this.status == 200){
  10.                 elem.innerHTML = this.responseText;
  11.                 callback();
  12.             }
  13.         }, false);
  14.     };
  15.  
  16. ajax("estilos.css", css, function(){
  17.     ventana.document.body.appendChild(css);
  18.     ventana.document.body.appendChild(foo);
  19.     ventana.print();
  20. });

De esta manera, creamos la ventana emergente, al elemento <style>, tomamos al elemento que queremos añadir a la ventana emergente y construimos la función que realizará la petición asíncrona. A ella le pasamos la ruta del archivo externo, el elemento al cual se insertará el contenido del archivo externo y una función que se ejecutará al finalizar el proceso.

En la función, creamos una instancia al objeto XMLHttpRequest, iniciamos y ejecutamos la petición y cuando esta se haya completado y el código HTTP nos indique que el proceso fue exitoso, añadimos el contenido del archivo externo al elemento <style> y ejecutamos la llamada de retorno.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 04/11/2015, 15:27
 
Fecha de Ingreso: septiembre-2015
Mensajes: 58
Antigüedad: 8 años, 7 meses
Puntos: 2
Respuesta: funcion para imprimir un div conservando los estilos css

Cita:
Iniciado por Alexis88 Ver Mensaje
Mediante una petición asíncrona (AJAX), podrías leer el contenido del archivo externo e insertarlo como contenido de un elemento <style>.

Código Javascript:
Ver original
  1. var ventana = window.open(),
  2.     css = document.createElement("style"),
  3.     foo = document.querySelector("#id del elemento"),
  4.     ajax = function(url, elem, callback){
  5.         var xhr = new XMLHttpRequest();
  6.         xhr.open("GET", url, true);
  7.         xhr.send();
  8.         xhr.addEventListener("load", function(){
  9.             if (this.status == 200){
  10.                 elem.innerHTML = this.responseText;
  11.                 callback();
  12.             }
  13.         }, false);
  14.     };
  15.  
  16. ajax("estilos.css", css, function(){
  17.     ventana.document.body.appendChild(css);
  18.     ventana.document.body.appendChild(foo);
  19.     ventana.print();
  20. });

De esta manera, creamos la ventana emergente, al elemento <style>, tomamos al elemento que queremos añadir a la ventana emergente y construimos la función que realizará la petición asíncrona. A ella le pasamos la ruta del archivo externo, el elemento al cual se insertará el contenido del archivo externo y una función que se ejecutará al finalizar el proceso.

En la función, creamos una instancia al objeto XMLHttpRequest, iniciamos y ejecutamos la petición y cuando esta se haya completado y el código HTTP nos indique que el proceso fue exitoso, añadimos el contenido del archivo externo al elemento <style> y ejecutamos la llamada de retorno.

Un saludo
hola alexis88

mira la verdad es que se muy poco de o nada sobre ajax y poco tiempo jeje. No existe alguna forma de hacerlo sobre js?.
  #5 (permalink)  
Antiguo 04/11/2015, 16:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: funcion para imprimir un div conservando los estilos css

¿Y en qué lenguaje crees que está escrito ese código?

Échale un vistazo a esto: AJAX.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: css
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 23:47.