如果禁用javascript,如何隐藏未被<noscript>标签包围的某些html?</noscript>

时间:2010-11-20 19:44:50

标签: javascript jquery html ajax graceful-degradation

<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的用户,也会显示该部分的内容。

但我想要做的只是在用户没有启用javascript 时隐藏<fancy-jquery-ajax-html>部分

它包含对未启用javascript的人无用的内容,因此根本不应显示。

禁用javascript的用户应才能看到一条消息,指出无法在没有javascript的情况下查看该网页。

有办法吗?

5 个答案:

答案 0 :(得分:4)

最简单的方法是使用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;
  }

答案 1 :(得分:2)

您可以使用css隐藏您喜欢的部分:

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

然后您可以使用JavaScript来显示元素:

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

我希望是的,我实际上并没有那么多使用jQuery。 :S

答案 2 :(得分:1)

另一种方法是使用JavaScript生成HTML,因此除非JavaScript正在运行,否则无法显示。

答案 3 :(得分:0)

我所做的是让我的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>

答案 4 :(得分:0)

我喜欢在加载jQuery后立即向html标记添加一个.js类。这允许我编写仅在用户启用/禁用javascript时才适用的css规则。这样可以保持你的show和hide代码不受我们JS的影响,让CSS完成它的工作并为页面设置样式

以下是我如何解决您的问题:

<html>
  <head>
    <style type="text/css">
      .js #fancy_jquery_ajax {display: none;}
    </style>
    <script type="text/javascript" src="/scripts/jquery.js"></script>
    <script type="text/javascript">
      $('html').addClass('js');
      $(document).ready(function() {
        // Stuff to do as soon as the DOM is ready
      });  
    </script>
  </head>
  <body>
      <div id = "fancy_jquery_ajax"></div>
      <noscript><!-- stuff to say if use had javascript disabled --></noscript>
  </body>
</html>

重要的是要注意,我们希望在jQuery加载后立即将.js类添加为,而不是将其添加到我们的document.ready处理程序中。否则我们会回到原点。