É discutível se há um número significativo de usuários navegando na Web com scripts desativados – e, com as principais soluções de análise como o Google Analytics sendo baseadas em JavaScript, não é exatamente fácil acompanhar a contagem exata.
O veículo básico para reagir aos scripts desativados há muito tempo é a <noscript>
tag – um vestígio deselegante de dias mais simples, que pouco pode fazer além de carregar um banner exigindo que os usuários habilitem os scripts para prosseguir (não faça isso!) ; ou, um pouco melhor – uma folha de estilo ‘não js’:
<noscript><link rel="stylesheet" href="nojs.css"></noscript>
No entanto, você pode facilmente tornar sua folha de estilo principal compatível com JS, sem falar em salvar uma solicitação, se descartar o <noscript> e começar seu HTML com o seguinte código:
<html class="no-js">
<head>
<script>
var _h = document.getElementsByTagName("html")[0];
_h.className = _h.className.replace(/bno-jsb/,'has-js');
</script>
Tudo o que isso faz é substituir o no-js
nome da classe com o has-js
uso de uma expressão regular simples . Se o JavaScript estiver desabilitado, a substituição simplesmente não ocorrerá e a no-js
classe permanecerá. Na verdade, o HTML5 Boilerplate faz algo bastante semelhante.
Agora você pode usar os seletores e em seus elementos CSS e de estilo de acordo. Como sempre, tenha em mente o aprimoramento progressivo ao criar suas páginas: mesmo que seu aplicativo dependa fortemente de scripts do lado do cliente, há um benefício de desempenho tangível de renderizar o conteúdo inicial de uma página no servidor. Para mais discussão sobre esse assunto, confira a apresentação bastante séria de Nicholas Zakas ..no-js
.has-js