Как скрыть определенный HTML, который не окружен тегами <noscript>, если JavaScript отключен? - PullRequest
1 голос
/ 20 ноября 2010
<html>

    <head>

        <script type="text/javascript">
         // jquery and javascript functions
        </script>

    </head>

    <body>

        <fancy-jquery-ajaxy-html-section>
        </fancy-jquery-ajaxy-html-section>

        <noscript>
        sorry you came to the wrong place - this site is all jquery/ajaxy stuff.
        </noscript>

    </body>

</html>

Я пытался окружить <fancy-jquery-ajaxy-html> <script type="text/javascript"></script>, но затем ничего из этого раздела не отображается даже для пользователей с включенным javascript .

Но что я хочу сделатьскрыть, что <fancy-jquery-ajax-html> раздел , только если у пользователя не включен JavaScript .

Содержит контент, который бесполезен для кого-то без включенного javascript, поэтому не должен отображаться вообще.

Пользователь с отключенным javascript должен only видетьсообщение о том, что страница не может быть просмотрена без JavaScript.

Есть ли способ сделать это?

Ответы [ 5 ]

4 голосов
/ 20 ноября 2010

Самый простой способ - скрыть раздел с помощью CSS (например, display:none), а затем показать его через Javascript.

РЕДАКТИРОВАТЬ: просто маленький пример

<div>Everyone sees this div</div>

<div id="mydiv" class="hidden">You see this div only with JS enabled</div>

<script type="text/javascript">
    $("#mydiv").removeClass("hidden");
</script>
<noscript>
    <div>You will see this div only with JS disabled</div>
</noscript> 

И, конечно же, в вашем CSS:

.hidden
  {
  display: none;
  }
2 голосов
/ 20 ноября 2010

Вы можете скрыть свой модный раздел, используя css:

<div id="fancy_jquery_ajax" style="display: none;">
</div>

, тогда вы можете использовать JavaScript для отображения элемента:

$("#fancy_jquery_ajax").css("display", "block");

Надеюсь, это правильно, я на самом деле нетак много пользуюсь jQuery.: S

1 голос
/ 20 ноября 2010

Другой подход заключается в создании этого HTML с использованием JavaScript, поэтому он не может появиться, если не запущен JavaScript.

0 голосов
/ 20 ноября 2010

Я предпочитаю добавлять класс .js в теги html сразу после загрузки jQuery.Это позволяет мне писать правила CSS, которые применяются только тогда, когда у пользователя включен / отключен JavaScript.Это позволяет скрыть ваше шоу и скрыть код от нашего JS, и позволяет CSS выполнять свою работу и стилизовать страницу.

Вот как я бы подошел к вашей проблеме:Я хочу добавить класс .js как , как только jQuery загрузит , и не добавлять его в наш обработчик document.ready.Иначе мы бы вернулись на круги своя.

0 голосов
/ 20 ноября 2010

Я сделал, чтобы мой javascript скрыл nojsdiv и показал maindiv. Таким образом, если у вас нет javascript, появится сообщение.

<body onload="allowlogin()">
    <div id="maindiv" style="visibility: hidden;">
...
    </div>
    <div id="nojsdiv">
        The training system requires javascript to be enabled.
    </div>
</body>
...