¿Cómo se puede detectar a través de Javascript si una hoja de estilo de impresión está vigente?

StackOverflow https://stackoverflow.com/questions/344973

  •  19-08-2019
  •  | 
  •  

Pregunta

Me gustaría tener un comportamiento alternativo durante una hoja de estilo de impresión en una página web. Algo en la línea de:

  

Si esta página se está imprimiendo, no   molestarse en llamar a SWFObject para convocar a un   .swf a la existencia. Solo deja el   HTML que reemplazará Flash.

He intentado cosas como configurar un elemento conocido a un estilo conocido que existe para la pantalla pero no para la hoja de estilo de impresión. Pero obtener un " estilo " a través de Javascript no se obtiene un estilo calculado .

Resumen: de forma cruzada, ¿es posible saber qué hoja de estilo está vigente?

¿Fue útil?

Solución

Parece que está confundido porque las hojas de estilo de impresión se usan cuando ve una página para imprimir, pero ese no es el caso. No se aplica una hoja de estilo de impresión hasta que el usuario realmente envíe la página a la impresora. En este punto, cualquier javascript que se ejecute ya ha finalizado.

Lo que desea hacer es colocar su SWFObject dentro de un contenedor div y hacer que el contenedor tenga el estilo de display: none; para los medios impresos.

Otros consejos

Puede usar JavaScript para acceder a las hojas de estilo en el documento y luego verificar si la hoja de estilo 'Imprimir' está activa. Una vez que haya determinado qué CSS está activo, podrá administrar su contenido.

La función getActiveStyleSheet se vería así:

function getActiveStyleSheet() 
{
    var i, a;

    for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) 
    {
        if (a.getAttribute("rel").indexOf("style") != -1
         && a.getAttribute("title")
         && !a.disabled) 
            return a.getAttribute("title");
    }

    return null;
}

Puede encontrar el código aquí: http://www.alistapart.com/articles/alternate / .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top