Existe uma tag em HTML que só exibirá seu conteúdo se o JavaScript estiver habilitado? Eu sei que <noscript>
funciona ao contrário, exibindo seu conteúdo HTML quando o JavaScript está desligado. Mas eu gostaria de exibir um formulário em um site apenas se o JavaScript estiver disponível, dizendo a eles por que eles não podem usar o formulário se não o tiverem.
A única maneira que conheço de fazer isso é com o document.write();
método em uma tag de script, e parece um pouco confuso para grandes quantidades de HTML.
javascript
html
noscript
Re0sless
fonte
fonte
display: none !important
, para evitar que seja sobrescrito por regras mais específicas (por exemplo, por seletores id ou css), que são destinadas para seu uso quando os scripts estão habilitados.<noscript>
na primeira vez que você atualiza uma página após desativar o Javascript nas preferências. Você precisa clicar em recarregar duas vezes para fazê-lo funcionar.Eu realmente não concordo com todas as respostas aqui sobre incorporar o HTML de antemão e ocultá-lo com CSS até que seja mostrado novamente com JS. Mesmo sem o JavaScript habilitado, esse nó ainda existe no DOM. É verdade que a maioria dos navegadores (mesmo navegadores de acessibilidade) irá ignorá-lo, mas ele ainda existe e pode haver momentos estranhos em que isso volte a incomodá-lo.
Meu método preferido seria usar jQuery para gerar o conteúdo. Se for muito conteúdo, então você pode salvá-lo como um fragmento de HTML (apenas o HTML que você deseja mostrar e nenhuma das tags html, body, head, etc.) e usar as funções ajax do jQuery para carregá-lo no a página inteira.
test.html
_test.html
resultado
fonte
Em primeiro lugar, sempre separe o conteúdo, a marcação e o comportamento!
Agora, se você estiver usando a biblioteca jQuery (você realmente deveria, isso torna o JavaScript muito mais fácil), o seguinte código deve servir:
Isso lhe dará uma classe adicional no corpo quando JS estiver habilitado. Agora, em CSS, você pode ocultar a área quando a classe JS não estiver disponível e mostrar a área quando JS estiver disponível.
Como alternativa, você pode adicionar
no-js
a classe padrão à tag do corpo e usar este código:Lembre-se de que ainda é exibido se o CSS estiver desabilitado.
fonte
Tenho uma solução simples e flexível, um pouco semelhante à de Will (mas com a vantagem adicional de ser um HTML válido):
Dê ao elemento do corpo uma classe de "jsOff". Remova (ou substitua) por JavaScript. Tenha CSS para ocultar qualquer elemento com uma classe "jsOnly" com um elemento pai com uma classe "jsOff".
Isso significa que se o JavaScript estiver habilitado, a classe "jsOff" será removida do corpo. Isso significa que os elementos com uma classe "jsOnly" não terão um pai com uma classe "jsOff" e, portanto, não corresponderão ao seletor CSS que os oculta, portanto, eles serão mostrados.
Se o JavaScript estiver desabilitado, a classe "jsOff" não será removida do corpo. Elementos com "jsOnly" terão um pai com "jsOff" e assim terá corresponderão ao seletor CSS que os oculta, portanto, serão ocultados.
Aqui está o código:
É html válido. É simples. É flexível.
Basta adicionar a classe "jsOnly" a qualquer elemento que você deseja exibir apenas quando JS está ativado.
Observe que o JavaScript que remove a classe "jsOff" deve ser executado o mais cedo possível dentro da tag body. Não pode ser executado antes, pois a tag do corpo ainda não estará lá. Não deve ser executado posteriormente, pois significa que os elementos com a classe "jsOnly" podem não ser visíveis imediatamente (pois eles corresponderão ao seletor CSS que os oculta até que a classe "jsOff" seja removida do elemento do corpo).
Isso também pode fornecer um mecanismo para estilo somente js (por exemplo
.jsOn .someClass{}
) e estilo somente no-js (por exemplo.jsOff .someOtherClass{}
). Você pode usá-lo para fornecer uma alternativa a<noscript>
:fonte
Você também pode usar Javascript para carregar conteúdo de outro arquivo de origem e gerá-lo. Isso pode ser um pouco mais caixa-preta do que você está procurando.
fonte
Aqui está um exemplo para o método div oculto:
(Você provavelmente teria que ajustá-lo para o IE pobre, mas essa é a ideia.)
fonte
Minha solução
.css:
.js:
.html:
fonte
O artigo de Alex vem à mente aqui, no entanto, só é aplicável se você estiver usando ASP.NET - ele poderia ser emulado em JavaScript, mas novamente você teria que usar document.write ();
fonte
Você pode definir a visibilidade de um parágrafo | div como 'oculto'.
Em seguida, na função 'onload', você pode definir a visibilidade para 'visível'.
Algo como:
<body onload = "javascript: document.getElementById (rec) .style.visibility = visible"> <p style = "visibility: visible" id = "rec"> Este texto deve ser oculto, a menos que o javascript esteja disponível. </p>
fonte
Não existe uma etiqueta para isso. Você precisaria usar javascript para mostrar o texto.
Algumas pessoas já sugeriram o uso de JS para definir o CSS visível de forma dinâmica. Você também pode gerar o texto
document.getElementById(id).innerHTML = "My Content"
dinamicamente com ou criar os nós dinamicamente, mas o hack CSS é provavelmente o mais simples de ler.fonte
Na década desde que essa pergunta foi feita, o
HIDDEN
atributo foi adicionado ao HTML. Ele permite ocultar elementos diretamente sem usar CSS. Tal como acontece com as soluções baseadas em CSS, o elemento deve ser ocultado pelo script:fonte