Czy w kodzie HTML jest tag, który będzie wyświetlał zawartość tylko przy włączonym JavaScript? Wiem, że <noscript>
działa odwrotnie, wyświetlając zawartość HTML, gdy JavaScript jest wyłączony. Chciałbym jednak wyświetlać formularz w witrynie tylko wtedy, gdy dostępny jest JavaScript, informując ich, dlaczego nie mogą użyć formularza, jeśli go nie mają.
Jedynym sposobem, w jaki wiem, jak to zrobić, jest użycie document.write();
metody w tagu skryptu i wydaje się to trochę kłopotliwe w przypadku dużych ilości HTML.
javascript
html
noscript
Re0sless
źródło
źródło
display: none !important
, aby nie był on zastępowany przez bardziej szczegółowe reguły (np. Przez selektory id lub css), których celem jest jego użycie, gdy włączone są skrypty.<noscript>
przy pierwszym odświeżaniu strony po wyłączeniu Javascript w preferencjach. Aby to zadziałało, musisz dwukrotnie nacisnąć przycisk przeładowania.Nie zgadzam się ze wszystkimi odpowiedziami tutaj dotyczącymi wcześniejszego osadzania HTML i ukrywania go za pomocą CSS, dopóki nie zostanie ponownie pokazany w JS. Nawet bez włączonej obsługi JavaScript ten węzeł nadal istnieje w DOM. To prawda, że większość przeglądarek (nawet przeglądarek z ułatwieniami dostępu) zignoruje to, ale nadal istnieje i mogą wystąpić dziwne chwile, kiedy to wróci, by cię ugryźć.
Moją preferowaną metodą byłoby użycie jQuery do wygenerowania treści. Jeśli będzie to dużo treści, możesz zapisać to jako fragment HTML (tylko HTML, który chcesz wyświetlić, bez tagów html, body, head itp.), A następnie użyj funkcji Ajax jQuery, aby załadować go do całą stronę.
test.html
_test.html
wynik
źródło
Przede wszystkim zawsze oddzielaj treść, znaczniki i zachowanie!
Teraz, jeśli używasz biblioteki jQuery (naprawdę powinieneś, to znacznie ułatwia JavaScript), następujący kod powinien wystarczyć:
To da ci dodatkową klasę w ciele, gdy włączony jest JS. Teraz w CSS możesz ukryć obszar, gdy klasa JS nie jest dostępna, i pokazać obszar, gdy JS jest dostępny.
Alternatywnie możesz dodać
no-js
klasę domyślną do swojego tagu body i użyć tego kodu:Pamiętaj, że jest nadal wyświetlany, jeśli CSS jest wyłączony.
źródło
Mam proste i elastyczne rozwiązanie, nieco podobne do Will'a (ale z dodatkową zaletą bycia prawidłowym html):
Nadaj elementowi body klasę „jsOff”. Usuń (lub zamień) to na JavaScript. CSS ma ukryć wszystkie elementy z klasą „jsOnly” z elementem nadrzędnym z klasą „jsOff”.
Oznacza to, że jeśli JavaScript jest włączony, klasa „jsOff” zostanie usunięta z treści. Oznacza to, że elementy z klasą „jsOnly” nie będą miały rodzica z klasą „jsOff”, a więc nie będą pasować do selektora CSS, który je ukrywa, więc zostaną wyświetlone.
Jeśli JavaScript jest wyłączony, klasa „jsOff” nie zostanie usunięta z treści. Elementy z „jsOnly” będą miały rodzica z „jsOff”, a więc będą pasować do selektora CSS, który je ukrywa, więc będą ukryte.
Oto kod:
To poprawny html. To jest proste. Jest elastyczny.
Po prostu dodaj klasę „jsOnly” do dowolnego elementu, który chcesz wyświetlać tylko wtedy, gdy włączony jest JS.
Zwróć uwagę, że JavaScript, który usuwa klasę „jsOff”, powinien być wykonywany jak najwcześniej wewnątrz tagu body. Nie można go wykonać wcześniej, ponieważ tagu body jeszcze nie ma. Nie należy go wykonywać później, ponieważ będzie to oznaczać, że elementy z klasą „jsOnly” mogą nie być od razu widoczne (ponieważ będą pasować do selektora CSS, który je ukrywa, dopóki klasa „jsOff” nie zostanie usunięta z elementu body).
Mogłoby to również zapewnić mechanizm stylizacji tylko js (np.
.jsOn .someClass{}
) I stylów no-js (np.jsOff .someOtherClass{}
.). Możesz go użyć jako alternatywy dla<noscript>
:źródło
Możesz także użyć JavaScript do załadowania treści z innego pliku źródłowego i wyprowadzenia tego. To może być trochę bardziej czarne pudełko niż szukasz.
źródło
Oto przykład ukrytego sposobu div:
(Prawdopodobnie musiałbyś go dostosować do słabego IE, ale masz pomysł.)
źródło
Moje rozwiązanie
.css:
.js:
.html:
źródło
Przychodzi tu na myśl artykuł Alexa , jednak ma on zastosowanie tylko wtedy, gdy używasz ASP.NET - można go jednak emulować w JavaScript, ale znowu musiałbyś użyć document.write ();
źródło
Możesz ustawić widoczność elementu div akapitu na „ukryty”.
Następnie w funkcji „onload” możesz ustawić widoczność na „visible”.
Coś jak:
<body onload = "javascript: document.getElementById (rec) .style.visibility = visible"> <p style = "visibility: visible" id = "rec"> Ten tekst ma być ukryty, chyba że jest dostępny javascript. </p>
źródło
Nie ma na to etykiety. Aby wyświetlić tekst, musisz użyć javascript.
Niektórzy ludzie już zasugerowali użycie JS do dynamicznego ustawienia widoczności CSS. Możesz również dynamicznie generować tekst
document.getElementById(id).innerHTML = "My Content"
lub dynamicznie tworzyć węzły, ale hack CSS jest prawdopodobnie najłatwiejszy do odczytania.źródło
W ciągu dekady, od kiedy zadano to pytanie,
HIDDEN
atrybut został dodany do HTML. Pozwala bezpośrednio ukrywać elementy bez używania CSS. Podobnie jak w przypadku rozwiązań opartych na CSS, element musi być odblokowany przez skrypt:źródło