Allí el <script>
es para. Inicialmente oculta la pieza en particular usando CSS y usa JavaScript para mostrarla. Aquí está un ejemplo puntapié inicial básica:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2297643</title>
<script>
window.onload = function() {
document.getElementById("foo").style.display = 'block';
};
</script>
<style>
#foo { display: none; }
</style>
</head>
<body>
<noscript><p>JavaScript is disabled</noscript>
<div id="foo"><p>JavaScript is enabled</div>
</body>
</html>
... o, con poca ayuda de jQueryready()
que es un poco tarde con la visualización del contenido:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2297643 with jQuery</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('#foo').show();
});
</script>
<style>
#foo { display: none; }
</style>
</head>
<body>
<noscript><p>JavaScript is disabled</noscript>
<div id="foo"><p>JavaScript is enabled</div>
</body>
</html>
para mejorar la experiencia del usuario, considerar la colocación de la <script>
llame directamente después del elemento HTML particular que necesita ser alternado, para que no haya "flash de contenido" o "elemento aleatorio". Andrew Moore dio un good example en este tema.
Alternativamente, puede hacerlo (hacky) al revés con <style>
en <noscript>
. Esta es sintácticamente válida, pero permitió que todos los navegadores de Internet Explorer 6 y superiores, incluyendo el W3C-estricta Opera:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2297643 with CSS in noscript</title>
</head>
<body>
<noscript>
<style>#foo { display: none; }</style>
<p>JavaScript is disabled
</noscript>
<div id="foo"><p>JavaScript is enabled</div>
</body>
</html>
Mostrar el elemento en el controlador 'onload' podría hacer que la página vuelva a fluir, moviendo elementos. El elemento tampoco aparecería hasta que todas las imágenes de la página hayan terminado de cargarse, algo nada bueno si estás buscando una imagen grande de un servidor lento :-) La devolución de llamada 'ready' de jQuery no tendría este problema, ya que funciona tan pronto como se analiza el documento. –
Sí, la forma jQuery o CSS-in-noscript es más preferida. – BalusC
El uso del enfoque jQuery no indica realmente que javascript esté deshabilitado en el navegador, podría significar que jQuery no está cargado (bloqueado quizás) o que el CDN no estaba disponible o no, mientras tus videos de YouTube y widgets de Facebook siguen funcionando bien . –