如何检查javascript是否被禁用?

时间:2010-01-19 23:40:07

标签: javascript cookies

如何检查用户是否在浏览器中禁用了javascript?例如:如果你在firefox中禁用javascript,stackoverflow站点会在顶部显示一个红色警告div?怎么做到这一点?

我注意到的另一件事:如果禁用cookie,stackoverflow不起作用。单击登录按钮时,它不会让您登录。实际上,这也是我对我的网站的假设,用户登录/会话数据取决于cookie,UI布局等..取决于javascript。

在这里我不想讨论设计原则(渐进增强等等),有谁能告诉我一个好方法来检查cookie,javascript是否启用?我认为必须在服务器端完成,对吧?

谢谢

3 个答案:

答案 0 :(得分:18)

在页面中添加<noscript>标记,如果禁用JavaScript,则会向用户显示该消息。

您还可以根据运行JavaScript代码的成功来检测JavaScript是否已启用

  • 添加隐藏字段并将其默认值设置为false
  • 运行一些将值设置为true
  • 的javascript代码
  • 回发后,请检查值。

要检查Cookie,请设置Cookie并尝试阅读。如果成功,则启用cookie。

答案 1 :(得分:3)

<!-- gatewayPage.php -->
<noscript>
    <div style="background-color:red;font-size:14pt;">
        This site will be very boring unless you enable Javascript!
    </div>
    <!-- if you're convinced that bots won't follow your redirect, add this: -->
    Proceed to <a href="myRealHomePage.php">MySite</a> anyway
</noscript>
<script>
    documment.location = "myRealHomePage.php";
</script>

答案 2 :(得分:0)

使用noscript标签:

       struct tm {
           int tm_sec;    /* Seconds (0-60) */
           int tm_min;    /* Minutes (0-59) */
           int tm_hour;   /* Hours (0-23) */
           int tm_mday;   /* Day of the month (1-31) */
           int tm_mon;    /* Month (0-11) */
           int tm_year;   /* Year - 1900 */
           int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
           int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
           int tm_isdst;  /* Daylight saving time */
       };

来源:http://www.w3schools.com/tags/tag_noscript.asp