Um script
elemento que foi estilizado como display:block
parece visível. Por que é possível e existe algum caso de uso real onde é desejado?
td > * {
display: block;
}
<table>
<tr>
<td>
<script type="text/javascript">
var test = 1;
</script>von 1
</td>
</tr>
</table>
html
css
script-tag
wutzebaer
fonte
fonte
<style>
com conteúdo editável. Ótima maneira de ver os efeitos em tempo real.Respostas:
A especificação HTML5 define uma folha de estilos que os agentes do usuário (como navegadores) devem usar. A Seção 10.3.1 lista os estilos de "Elementos ocultos":
Como você pode ver, isso se aplica
display: none;
ascript
.Essa é a única "barreira" entre seus usuários e
script
elementos ocultos . É perfeitamente adequado e pretende sobrescrever estilos das folhas de estilo do agente do usuário nas folhas de estilo do autor (e, é claro, também nas folhas de estilo do usuário).Por que alguém pode querer usá-lo? Um caso de uso está exibindo conteúdo sem ter que escapar de caracteres como
<
/>
, semelhantes aoxmp
elemento antigo . Oscript
elemento pode ser usado não apenas para scripts, mas também para blocos de dados (ou seja, para qualquer coisa com um tipo MIME).fonte
<script>
- blocos de dados não podem ser carregadossrc
.src
atributo não será permitido noscript
elemento.Porque eles são elementos HTML como qualquer outro e não há razão para escrever regras de caso especiais na especificação HTML (o que adicionaria complexidade) para impedir que o CSS se aplique a eles.
Qualquer elemento pode ser estilizado. Considere por exemplo:
Certamente não são comuns, mas as regras gerais não são projetadas para fazer sentido para tudo o que você pode aplicá-las. Eles são projetados para os casos comuns.
fonte
user agent stylesheet: script {display:none}
<script type="text/plain">
como<xmp>
antes, mas ainda assim ser compatível com o validador W3C.script {display: block !important;}
não funciona quando não existe uma regra de caso especial?script
tag também deve estar em um elemento visível - ela mostrará apenas vocêscript
no corpo, nãohead
por exemplo, por padrão.Outro caso de uso (não comum):
Às vezes, uso
<script>
tags para exemplos breves de código HTML em guias de estilo. Dessa forma, não preciso escapar de tags HTML e caracteres especiais. E a tag do editor de texto continua com o preenchimento automático e o destaque da sintaxe. Mas não há uma maneira fácil de adicionar realce de sintaxe no navegador.fonte
text/html
e usar algo comoclass="codesample"
para aplicar estilos. Apenas por razões pedantes: Dx-
prefixo padrão para tipos personalizados, ou seja, fazê-lotext/x-example
.Possível caso de uso: para fins de depuração.
Você pode aplicar uma classe no nível do documento, por exemplo.
<body class="debugscript">
, então use algum CSS:fonte
<html class="debugscript">
?<head>
scripts porque o<head>
próprio site também possui,display:none
então você precisará forçar a revelar isso, o que pode levar a complicações adicionais.As tags de script são ocultadas por padrão usando
display:none;
. O Unor 1 explica a especificação do idioma subjacente. No entanto, eles ainda fazem parte do DOM e podem ser estilizados de acordo.Dito isto, é importante ter em mente exatamente o que uma tag de script está fazendo. Embora fosse acompanhado por tipos e idiomas, isso não é mais necessário. Agora, pressupõe-se que o JavaScript esteja lá e, como resultado, os navegadores interpretarão e executarão o script à medida que for encontrado (ou carregado) a partir dessas tags.
Depois que o script é executado, o conteúdo da tag é apenas texto (geralmente oculto) na página. Este texto pode ser revelado, mas também pode ser removido porque é apenas texto.
Na parte inferior da página, logo antes da
</html>
tag de fechamento , você pode removê-las facilmente com o texto e não haverá alterações na página.Por exemplo:
Isso não removerá nenhuma funcionalidade, pois o estado da página já foi alterado e é refletido no atual contexto global de execução. Por exemplo, se a página carregou uma biblioteca como o jQuery, a remoção das tags não significa que o jQuery não está mais exposto porque já foi adicionado ao ambiente de tempo de execução da página. Essencialmente, é apenas fazer com que a ferramenta de inspeção DOM não mostre elementos de script, mas destaca que os elementos de script, uma vez executados, realmente são apenas texto.
1. unor, qui 07/07/2016, wutzebaer, "Quando as tags devem estar visíveis e por que podem?", 1 de julho às 10:53, https://stackoverflow.com/a/38147398/1026459
fonte