Nie powinniśmy użyć elementu?

Znalazłem tu kilka dobrych minusów:

  • Element noscript wykrywa tylko, czy przeglądarka ma włączoną obsługę JavaScript, czy nie. Jeśli JavaScript jest wyłączony w firewallu, a nie w przeglądarce, wtedy JavaScript nie zostanie uruchomiony, a zawartość elementu noscript nie zostanie wyświetlona.

  • Wiele skryptów zależy od określonej funkcji lub cech obsługiwanego języka, aby mogły być uruchamiane (na przykład dokument.getElementById). Tam, gdzie wymagane funkcje nie są obsługiwane, JavaScript nie jest w stanie uruchomić, ale ponieważ sam JavaScript jest obsługiwany, zawartość noscript nie będzie wyświetlana.

  • Najbardziej przydatne miejsce do użycia elementu noscript znajduje się w nagłówku strony, gdzie będzie mógł selektywnie określić, jaki arkusz stylów i elementy meta zostaną zastosowane do strony podczas ładowania strony, zamiast czekać na załadowanie strony. Niestety noscript element jest ważny tylko w treści strony i dlatego nie może być użyty w nagłówku.

  • Element noscript jest elementem poziomu blokowego i dlatego może być używany tylko do wyświetlania całych bloków zawartości, gdy JavaScript jest wyłączony. Nie można go używać w linii.

  • Idealnie, strony internetowe powinny używać HTML dla zawartości, CSS dla wyglądu i JavaScript dla zachowania. Użycie elementu noscript polega na stosowaniu zachowania z poziomu HTML, a nie na jego stosowaniu z JavaScript.

Źródło: http://javascript.about.com/od/reference/a/noscriptnomore.htm

Bardzo się Zgadzam co do ostatniego punktu. Czy istnieje sposób na utworzenie i dodanie zewnętrznego pliku <noscript>? Czy powinniśmy umieścić <noscript> w <head>?
Author: John, 2010-01-31

11 answers

Lepiej mieć domyślną wartość non-javascript, a następnie pozwolić kodowi javascript nadpisać z włączoną stroną javascript. To nie musi być dużo. Może być po prostu blokiem display:none;, który jest następnie ustawiany na display:block; przez javascript i odwrotnie dla strony innej niż js.

 48
Author: Tor Valamo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-31 03:58:03

Po wielu dniach zastanawiania się i zmienianiu kodu w tę i z powrotem, myślę, że mam teraz jaśniejszy obraz i chciałbym podzielić się moimi dwoma centami na ten temat, zanim zapomnę.

<div id='noscript'>show non-js content</div>
<script>document.getElementById('noscript').style.display='none';</script>
<script id='required script'>show js content</script>

Vs

<noscript>show non-js content</noscript>
<script id='required script'>//show js content</script>

W zależności od sytuacji, są trzy przypadki do rozważenia:

Przypadek 1 - jeśli wymagany skrypt jest w linii

JavaScript disabled

  • zawartość w elemencie <noscript> pojawia się natychmiast, zawartość nie-js na pokazane
  • zawartość w elemencie <div> pojawia się natychmiast, zawartość nie-js jest wyświetlana

JavaScript enabled

  • zawartość w elemencie <noscript> w ogóle się nie pojawia, zawartość js pokazana
  • treść w elemencie <div> może się chwilowo pojawić przed ukryciem, js zawartość pokazana

W tym przypadku użycie elementu <noscript> jest korzystne.

Przypadek 2 - jeśli wymagany skrypt pochodzi z zewnętrznego (zewnętrznego) źródła, ale ukrycie <div> element jest wykonywany za pomocą skryptu inline

JavaScript disabled

  • zawartość w elemencie <noscript> pojawia się natychmiast, zawartość nie-js jest pokazane
  • zawartość w elemencie <div> pojawia się natychmiast, zawartość nie-js jest wyświetlana

JavaScript włączony, ale wymagany skrypt jest zablokowany

  • treść w elemencie <noscript> w ogóle się nie pojawia, nic nie jest pokazane!
  • treść w elemencie <div> może się chwilowo pojawić przed Ukryte, nic nie jest pokazane!

Otrzymujemy skrypt JavaScript włączony i wymagany

  • zawartość w elemencie <noscript> w ogóle się nie pojawia, zawartość js pokazana
  • treść w elemencie <div> może się chwilowo pojawić przed ukryciem, js zawartość pokazana

W tym przypadku użycie elementu <noscript> jest korzystne.

Przypadek 3 - w razie potrzeby skrypt ukrywa <div> element

JavaScript disabled

  • zawartość w elemencie <noscript> pojawia się natychmiast, zawartość nie-js jest pokazane
  • zawartość w elemencie <div> pojawia się natychmiast, zawartość nie-js jest wyświetlana

JavaScript włączony, ale wymagany skrypt jest zablokowany

  • treść w elemencie <noscript> w ogóle się nie pojawia, nic nie jest pokazane!
  • pojawia się Zawartość w elemencie <div>, wyświetlana jest zawartość nie-js

JavaScript włączony i wymagany skrypt to otrzymano

  • zawartość w elemencie <noscript> w ogóle się nie pojawia, zawartość js pokazana
  • treść w elemencie <div> może się chwilowo pojawić przed ukryciem, js zawartość pokazana

W tym przypadku użycie elementu <div> jest korzystne.

W podsumowaniu

Użyj elementu <noscript>, Jeśli renderowanie zawartości HTML zależy od skryptów innych firm lub jeśli wymagany skrypt jest wbudowany. W przeciwnym razie użyj elementu <div> i upewnij się, że wymagany skrypt zawiera:

document.getElementById('noscript').style.display='none';
 25
Author: Question Overflow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-22 19:18:42

Chociaż Tor Valamo ma elegancką odpowiedź na ten problem, istnieje problem, który może spowodować, że zrezygnujesz z używania tej techniki.

Problemem jest (zazwyczaj) IE. Ma tendencję do ładowania i wykonywania JS nieco wolniej niż inne przeglądarki, co powoduje, że czasami flash div" Proszę włączyć Javascript " przez ułamek sekundy, zanim następnie ładuje JS i ukrywa div.

Jest to denerwujące i aby obejść to można zaimplementować "klasyczny". <noscript> redirect podejdźcie.

<head>
<noscript><meta http-equiv="refresh" content="0; URL=/NO_SCRIPT_URL/ROUTE_HERE"/></noscript>
</head>
To najbardziej solidna technika, z jaką spotkałem się w odniesieniu do tego małego paskudnego.
 8
Author: Steve Hemsley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-14 18:54:09

Jedną z przydatnych aplikacji dla noscript, które widziałem, jest stopniowe Ulepszanie asynchronicznego ładowania ciężkich treści (szczególnie "poniżej fałdy"). Duże obrazy, ramki iframes itp. może być zawinięty w noscript w źródle HTML, a następnie rozpakowane elementy mogą być dołączane do strony za pomocą JavaScript, gdy DOM jest gotowy. To odblokowuje stronę i może znacznie przyspieszyć początkowe Ładowanie, zwłaszcza jeśli interfejs opiera się na interakcjach JS/JQ zastosowanych po tym, jak dokument jest gotowe (2 sekundy vs. 6 sekund dla strony portfolio, na której konsultowałem się).

 7
Author: Geordie Kaytes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-27 13:17:05

W dzisiejszych czasach wydaje się, że prawie każda przeglądarka uruchamia Javascript, ale nigdy nie wiesz, kto będzie miał dostęp do twojej witryny. Obecnie nawetczytniki ekranu i Web crawlery używają Javascript, a czasami wysyłają żądania AJAX, jeśli muszą.

To powiedziawszy, jeśli zamierzasz wrócić do No-Javascript, jest o wiele lepszy sposób niż znacznik <noscript>. Po prostu zrób to w HEAD swojego dokumentu:

<script type="text/javascript">
    document.getElementsByTagName('html')[0].className += ' Q_js'; // better than noscript
</script>

Dzięki tej technice możesz łatwo odnieść się do Q_js klasa w CSS, aby ukryć rzeczy. Za pomocą znacznika <noscript> Najlepsze na co możesz liczyć, to dodanie dodatkowego pliku CSS, aby zastąpić poprzedni CSS. Staje się to ważne, gdy niektóre elementy ze statyczną zawartością mają być od razu Ukryte (nie migotać), dopóki Javascript nie może uczynić ich bardziej dynamicznymi.

Krótko mówiąc, technika, którą zaproponowałem, odnosi się do wszystkich Twoich minusów 1-5 i uważam, że jest zdecydowanie lepsza niż używanie <noscript>.

 5
Author: Gregory Magarshak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-09 23:19:24

W (miejmy nadzieję) niedalekiej przyszłości będziesz mógł używać css @Media scripting :

@media (scripting: none) {
    /* styles for when JS is disabled */
}
 4
Author: Null,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-09 21:23:43

Tworzę pełną wysokość, pełną szerokość, pozycję: fixed div na wszystkich stronach z jakimś id .

<div id='noscript_div' style='position:fixed;z-index:20000000;height:100%;width:100%;line-height:100%;'>enable JS buddy</div>
$('#noscript_div').hide();
$(document).ready(function(event){




});
Nie jestem ekspertem . To mi pomogło . Przykro mi, ale ta sprawa będzie pasować tylko wtedy, gdy chcesz, aby użytkownik miał włączoną obsługę javascript zawsze
 1
Author: R.Raaj Prashanth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-23 01:17:04

Prosty ideea jest w tym czasie Twoja strona może dostosować się do no JavaScript użycia na powolnych urządzeniach za pomocą znacznika noscript jak encja dla całej zawartości witryny**( twój html powinien być przygotowany do no javascript i wszystkie kontrolki muszą działać również, jeśli javascript jest wyłączony,użytkownicy używający podstawowych kontrolek html powinni być w stanie zrobić wszystko, co zrobili przed, gdy javascript był wyłączony active.So <noscript></noscript> może być dynamicznym przełącznikiem do tej samej treści w inny sposób z tymi samymi wynikami = rozwiązanie problemu dlatego użytkownicy otwierają Twój adres url ).** Możesz zobaczyć, czy bez względu na javascript jest lub nie jest obecny, funkcjonalność witryny może być "taka sama" w każdym przypadku js włączone / wyłączone.Na chińskich wolnych urządzeniach, np.:Samsung neo mini phone ta metoda może uruchomić stronę internetową bez żadnych opóźnień przy niskim ruchu internetowym.. spróbuj uruchomić tę stronę Auto double functionallity jeśli JS jest on/off cases:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
<HEAD>
<TITLE>noscript can change the Internet forever</TITLE>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
$(document).ready(function(){
    $('noscript').replaceWith(function() {
        return this.textContent || this.innerText;
    });
    $("p#javascripton").css("background-color", "yellow"); 
    $("p").click(function(){
        $(this).hide();
    });
}); 
//-->
</SCRIPT>
<noscript>
<p>
Noscript's usage today can be logical for <a href="http://google.com/"><p id="javascripton">eg pc/laptop/high quality tablets usage the complete website with all features:images high resolution,javascript<br><h1>OR without javascript so no high resolutions images inserted with a jquery automated script generated from some php+javascript scripts so have usage for 80% mobile application cause almost are from China ,so low quality products=low cpu,low ram :IN THIS CASE SOMEONE CAN THINK TO SWITCH HIS PHONE TO NO JAVASCRIPT USAGE SO IF ANY PROGRAMMER CAN ADAPT AN ENTIRELY APPLICATION TO THE METHOD I USED IN THIS EXAMPLE AUTOMATED HIS BROWSER IS ADAPT FOR ANY RANDOM ACTION ABOUT THE USER CHOISE(YOU UNDERSTAND "TO USE OR NOT JAVASCRIPT") SO HIS CHINESE PHONE CAN BE APROXIMATELLY APROACH LIKE QUALITY OF SPEED EXECUTION THE OTHERS PC/LAPTOPS/TABLETS QUALITY PRODUCTS.<BR><BR>This stupid example is the best example how no script tag can change the quality of services on this planet ,boost the speed of the internet connection and stops unnecessary use of A LOT OF INTERNET TRAFFIC on slow devices..a simple tag can change the entirely dynamic of programmer's views so entirely Planet's beneficts</h1><p></a> <br>
run this code in two instances :<br>with browser javascript enable <br>and without(browser's javascript disable or eg a firefox plugin noscript states on/off)
</p>
</noscript>
</BODY></HTML>
I powiedzieć więcej na ten temat .. prawo noscript został wymyślony, aby działać jak wyzwalacz, gdy js jest wyłączony, ale możesz obejść tę funkcję, aby zmienić przebieg funkcjonalności internetu o tym, jak jest teraz, aby zmienić jego dynamikę....
 1
Author: Constantin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-24 15:38:16

Jak wszystkie rzeczy, użyj odpowiedniego narzędzia do pracy.

Jeśli używasz Google Maps API, masz statyczny obraz za pomocą tagu, który zostaje zastąpiony dynamiczną mapą JS. Google niedawno zaczął pobierać opłaty za wszystko, więc w powyższym przykładzie będzie cię kosztować dwa razy, raz za statyczne i raz za dynamiczne. Mapa statyczna ma znaczenie tylko wtedy, gdy JS jest wyłączony. Dlatego, aby zaoszczędzić podwójne płacenie, wydaje mi się najlepszym rozwiązaniem jest owinięcie znacznika dla statycznej mapy w znacznik.

 1
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 08:31:36

Element "noscript" nie jest obsługiwany w XML ani w xhtml5 polyglot, więc nie jest zalecany przez W3C.

Nie podoba mi się również pomysł, że każda strona zaczyna się od bez skryptu wyświetlany div, który jest następnie ukryty przez niektóre Javascripted cyrkowy trick na każdej stronie strony internetowej. Niebezpieczne i bardziej Skryptowe zależności, które mogą się nie udać lub siać spustoszenie, jeśli zostaną zmienione przez późniejszego dewelopera.

Lepszą strategią jest zaprojektowanie witryny z podstawowym projektem html, który owija się wokół wszystkich wewnętrznych zawartość skryptowa, więc użytkownik widzi przynajmniej Projekt strony z nagłówkiem i miejscem, w którym pojawiłaby się podstawowa zawartość. Jeśli jest pusty, jest dość oczywisty, nie mogą wyświetlić treści z jakiegoś powodu. Chciałbym następnie dodać małą wiadomość lub ikonę informacji w stopce mówiąc, jeśli nie widzisz treści Twój javascript jest wyłączony. Pojawia się niezależnie od tego, czy widzą treści Skryptowe, czy nie. To rozwiązanie jest darmowe skrypty.

W ostateczności można ukryć tę wiadomość za pomocą skryptów Wyświetlacz: Brak na dole każdej strony.

To nie jest tak seksowne, jak dostarczanie alternatywnej treści lub skrzynki z wiadomościami, ale w przypadku ciężkich stron kanciastych i tak musiałbyś utworzyć dla nich nową stronę z treścią, gdyby Skrypty były wyłączone. Rozwiązanie to zapewnia również brak obsługi skryptów w user-agent w porównaniu z obsługą wyłączoną i sprawia, że strona internetowa jest w 100% kompatybilna z XML i HTML5 ze wszystkimi agentami użytkownika, unikając znacznika noscript.

 -1
Author: Stokely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 21:20:54

Polecam nie używać <noscript>, możesz użyć następującego kodu:

<HTML>
<head>
<script>
     window.location="some-page.php";
</script>
</head>
<body>
<p>
    Please active JavaScript .
</p>
</body>
</HTML>

Jeśli pod żadnym pozorem JS nie jest włączone, wiadomość zostanie wyświetlona, w przeciwnym razie użytkownik zostanie przekierowany na stronę docelową .

 -12
Author: mohammad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-03 01:06:26