Pergunta

Humor-me um pouco aqui.

Por que eu usaria <noscript> em minhas páginas? A alternativa (pelo menos a que uso) é a Classe Modernizr + no-js combo que é utilizado com (por exemplo) o HTML 5 Boilerplate, e isso tem sido suficiente em todos os casos de uso até agora.

A única razão pela qual consigo pensar em usar <noscript> é carregar condicionalmente arquivos de recursos quando JS não está habilitado (provavelmente, substituições de CSS?).Não tenho certeza se existe uma maneira de fazer isso sem JS sem usar <noscript>, mas mesmo esse caso de uso parece que pode ser contornado.

Muitas respostas óbvias abaixo.

Sim, <noscript> é usado para mostrar/ocultar condicionalmente elementos HTML para o cliente quando o Javascript não está disponível.Eu sei que.Você sabe disso.Todo mundo que trabalha com HTML provavelmente deveria saber disso.

No entanto, existem muitas outras maneiras de fazer a mesma coisa, muitas das quais são preferidas a <noscript>.Um é o html.no-js classe que o Modernizr alterna, que mencionei acima.

Portanto, a ideia por trás da questão é mais: existe alguma coisa que <noscript> pode fazer pelo desenvolvedor web que é exclusivo para ele?Ou seja, é bastante significativo, mas não há outra maneira de fazer isso de outra forma?

@Guffa abaixo faz uma boa observação com os anúncios.

Foi útil?

Solução

Bem, por que você deveria?Se você não tem utilidade para isso, simplesmente não use.

O noscript tag é frequentemente usada para substitutos em anúncios e rastreamento de visitantes.Se o usuário tiver o Javascript desabilitado, uma imagem simples será carregada em vez de executar o script.

Outras dicas

quando o navegador do usuário não suporta javascript ou Javascript desabilitado.o elemento que será exibido.

Se bem me lembro, um dos principais casos de uso identificados para justificar sua inclusão no HTML5 (em vez de ser classificado como obsoleto) foi que ele pode ser usado com <meta http-equiv="refresh" ... dentro dele para que, se JS não estiver disponível, o usuário seja automaticamente redirecionado para uma versão não-JS do site.

Se você tiver uma página com JS crucial, use noscript para que seus usuários saibam que seu JS está desabilitado e que eles precisam habilitá-lo para visualizar a página.

tag é usada caso o JavaScript do navegador esteja desabilitado.O conteúdo interno só é exibido quando o JavaScript do seu navegador não está ativado.

Você pode usá-lo para mensagens de aviso como:'Ei, seu JavaScript está desativado.'

O melhor caso de uso que consigo pensar para noscript é quando você está tentando usar javascript para atrasar o carregamento de ativos para desempenho da página.Considere um carregador lento de imagem simples:

<style>
    .no-js .lazy-load { display:none }
</style>
<img data-src="/path/to/img.jpg" src="/placeholder.png" class="lazy-load">
<noscript>
    <img src="/path/to/img.jpg">
</noscript>
<script>(function ($) {
    // http://stackoverflow.com/a/488073/1459873
    function isScrolledIntoView(elem) {
        var $elem = $(elem);
        var $window = $(window);
        var docViewTop = $window.scrollTop();
        var docViewBottom = docViewTop + $window.height();
        var elemTop = $elem.offset().top;
        var elemBottom = elemTop + $elem.height();
        return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
    }
    function lazyLoad() {
        $('img.lazy-load').filter(function () {
            return isScrolledIntoView(this);
        }).each(function () {
            var $this = $(this);
            $this.attr('src', $this.data('src'))
                 .removeClass('lazy-load')
                 .addClass('lazy-loaded');
        });
    }
    $.ready(lazyLoad);
    $(window).on('load scroll resize', lazyLoad);
}(jQuery))</script>

Se você tentar ocultar a imagem carregada lentamente com classes CSS, o substituto no-js ainda carregará a imagem.

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