Como se detectar via JavaScript se uma folha de estilo de impressão estiver em vigor?

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

  •  19-08-2019
  •  | 
  •  

Pergunta

Eu gostaria de ter comportamento alternativo durante uma folha de estilo de impressão em uma página da web. Algo parecido com:

Se esta página estiver sendo impressa, não se preocupe em ligar para o Swfobject para convocar um .swf existir. Basta deixar o HTML que o flash substituirá.

Eu tentei coisas como definir um elemento conhecido como um estilo conhecido que existe para a tela, mas não para a folha de estilo de impressão. Mas obter um "estilo" via JavaScript não recebe um calculado estilo.

Resumo: De maneira cruzada, é possível dizer qual folha de estilo está em vigor?

Foi útil?

Solução

Parece que você está confuso de que as folhas de estilo de impressão são usadas quando você visualiza uma página que aceita a impressora, mas esse não é o caso. Uma folha de estilo de impressão não é aplicada até que o usuário envie a página para a impressora. Neste ponto, qualquer JavaScript que será executado já terminou.

O que você quer fazer é colocar seu swfobject dentro de um recipiente de div e ter o contêiner com estilo como display:none; para a mídia impressa.

Outras dicas

Você pode usar o JavaScript para acessar as folhas de estilo no documento e verificar se a folha de estilo 'impressão' está ativa. Depois de determinar qual CSS está ativo, você pode gerenciar seu conteúdo.

o getActiveStyleSheet A função se parece com o seguinte:

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;
}

Você pode encontrar o código aqui: http://www.alistapart.com/articles/alternate/.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top