2009-09-16 10 views
21

Powiedzmy, mam kod HTML tak:Jak owinąć <noscript> tag do ukrycia zawartości kiedy JavaScript wyłączyć

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
This is content. 
</body> 
</html> 

I chcę dodać tam <noscript> tag. Co oznacza, że ​​jeśli JavaScript jest wyłączony, zostanie wyświetlony jako pusta strona.

I tylko wtedy, gdy JavaScript jest wyłączony, wyświetli się "To jest tekst treści".

Podaj mi kilka przykładów do osiągnięcia. Dzięki.

Odpowiedz

4

To trochę dziwne.

Do tego nie potrzeba nawet "nosków". Można tylko mieć pustą pierwszą stronę, która jest tylko zawartość jest javascript formularza:

document.location = '/realpage.htm'; 

A potem nazwać OnLoad z jQuery, czy cokolwiek innego. Będzie to oznaczać, że jeśli klient nie ma skryptów, nigdzie nie dojdzie, dlatego strona pozostaje pusta.

Edit:

przykład, zgodnie z wnioskiem:

<html> 
<body onload="document.location = 'realpage.html';"> 
</body> 
</html> 
+0

hi jedwabiste, chcę spróbować na swój sposób też. Ale z powodu braku wiedzy. Nie wiem jak to zrobić. Czy możesz napisać przykładowy kod do przetestowania? Dzięki. –

+0

Dzięki za odpowiedź jedwabisty. Rozumiem. –

+0

Jeśli twoja strona nie zezwala użytkownikowi na dostęp do niej przez jedną stronę bramy, potrzebujesz dwóch stron dla każdej strony, którą chcesz wyświetlić. Tak? Lub mają tylko jedną stronę internetową. – BillR

4

Znacznik noscript działa na odwrót. Aby zawartość widoczna, gdy skrypt jest włączona, umieścić go w elemencie, który jest ukryty, i pokazać je za pomocą skryptu:

<div id="hasScript" style="display:none"> 
This is content 
</div> 
<script>document.getElementById('hasScript').style.display='';</script> 
21

Wrap wszystkie skorzystać z zawartości wewnątrz głównego div z wyświetlaczem równych i w funkcji onload zmienić wyświetlacz do zablokowania.

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled Document</title> 
</head> 
<body> 
    <div id="divMain" style="display: none"> 
    This is content. 
    </div> 
<noscript> 
    JS not enabled 
</noscript> 
<script> 
    document.getElementById("divMain").style.display = "block"; 
</script> 
</body> 
</html> 
+0

dzięki to działa. Po prostu chcesz poznać inne pytanie, które, nawet jeśli dodamy tag noscript, czy nadal mogą wyświetlać kod źródłowy? –

+0

Tak, oczywiście, noscript nie ma nic wspólnego z generowaniem HTML. – rahul

+0

ah okie. Dziękujemy za szybką i szybką odpowiedź. –

0

Można zrobić coś takiego

<body id="thebody"> 
    this is content. 
    <script> 
    document.getElementById('thebody').innerHTML = "<p>content when JS is enabled!"; 
    </script> 
</body> 
50

alternatywą dla podejścia JS sugerowane przez Rahul jest wyświetlanie div w elemencie <noscript>, obejmujące całą stronę:

<noscript> 
    <div style="position: fixed; top: 0px; left: 0px; z-index: 3000; 
       height: 100%; width: 100%; background-color: #FFFFFF"> 
     <p style="margin-left: 10px">JavaScript is not enabled.</p> 
    </div> 
</noscript> 
+0

To jest świetne rozwiązanie, dzięki! – jkraybill

+21

Genialny! Chciałbym go upvote, ale ja nie mam włączone javascript .. :-) –

+0

Dostałem moje upvote, ponieważ jest dokładnie to, co chciałem zrobić, ale potrzebowałem pomocy z atrybutami stylu. – TecBrat

2

Ten POWIĘKSZYĆ naprawdę działa! ukryć zawartość kiedy JavaScript nie jest włączona Uwaga: można zastąpić <noscript> z <noembed> lub <noframes> też.

<!-- Normal page content should be here: --> 
Content 
<!-- Normal page content should be here: --> 
<noscript> 
<div style="position: absolute; right: 0; bottom: 0; 
    display: none; visibility: hidden"> 
</noscript> 
<-- Content that should hide begin --> 
**Don't Show! Content** 
<-- Content that should hide begin --> 
<noscript> 
</div> 
</noscript> 
<!-- Normal page content should be here: --> 
Content 
<!-- Normal page content should be here: --> 
-1

Pokaż wiadomość Your browser does not support JavaScript! po tym przekierowanie do innej strony

<noscript>Your browser does not support JavaScript! 
    window.location.href = "http://example.com" // redirect to other page 
    </noscript> 
+4

'window.location.href' nie będzie działać, ponieważ JavaScript jest wyłączony. –

1

miałem bardzo problem:

Chciałem pokazać pełną stronę, kiedy JavaScript została włączona. Jeśli jednak wyłączono javascript, nie tylko chcę wyświetlić komunikat "ta witryna wymaga javascript ...", ale nadal chciałem wyświetlić nagłówek & stopki (które znajdują się w header.inc i footer.inc, wywoływane przez każdą stronę treści) mojej strony (aby wyglądać ładnie).Innymi słowy, chciałem tylko zastąpić główny obszar zawartości mojej witryny. Oto moje rozwiązanie html/css:

Header.inc plik (lokalizacja nie ma znaczenia):

<noscript> 
    <style> 
     .hideNoJavascript { 
      display: none; 
     } 
     #noJavascriptWarning { 
      display: block !important; 
     } 
    </style> 
</noscript> 

plik nagłówka (na dole):

<div id="noJavascriptWarning">The Ignite site requires Javascript to be enabled!</div> 
<div class="container-fluid hideNoJavascript"> 
<!-- regular .php content here --> 

plik CSS:

#noJavascriptWarning { 
    color: #ed1c24; 
    font-size: 3em; 
    display: none; /* this attribute will be overridden as necessary in header.inc */ 
    text-align: center; 
    max-width: 70%; 
    margin: 100px auto; 
} 

Podsumowując, mój komunikat "wymagany javascript" jest ukryty zgodnie z moją domyślną regułą CSS. Jednak gdy przeglądarka analizuje znacznik, zastępuje domyślną regułę, w wyniku czego główna treść jest ukryta i (wszystko oprócz nagłówka/stopki) i wyświetlany jest komunikat javascript. Działa idealnie ... na moje potrzeby! Mam nadzieję, że ktoś inny znajdzie Ta użyteczna :-)

Oto dwa screeny z JavaScript włączone/wyłączone:

enter image description here

enter image description here

0

Zarówno tag styl i meta refresh działają wewnątrz NoScript :

<noscript> 

<style>body { display:none; }</style> 

<meta http-equiv="refresh" content="0; url=blankpage.html"> 

</noscript> 

Pierwsza linia będzie wyświetl bieżącą stronę, ale pustą. Druga linia będzie przekierowywać do blankpage.html

Powiązane problemy