今天早上有个帖子问有多少人禁用JavaScript。然后我开始想知道可以使用什么技术来确定用户是否禁用了它。

有人知道一些简单的方法来检测JavaScript是否被禁用吗?我的意图是给一个警告,如果浏览器没有启用JS,站点将无法正常运行。

最终,我想把它们重定向到能够在没有JS的情况下工作的内容,但我需要这个检测作为一个占位符来开始。


当前回答

当浏览器中没有启用js时,<noscript>标记中的代码将被执行。 我们可以使用noscript标签来显示msg来打开JS,如下所示。

<noscript>
    <h1 style="text-align: center;">
       To view this page properly, please 
       enable JavaScript and reload the page
    </h1>
</noscript>

同时保持我们的网站内容在身体隐藏。如下

<body>
<div id="main_body" style="display: none;">
    website content.
</div>
</body>

现在如果JS是打开的,你可以让main_body中的内容可见,如下所示

<script type="text/javascript">
    document.getElementById("main_body").style.display="block";
</script>

其他回答

我昨天解决了同样的问题,所以我在这里加上。001。解决方案对我来说很有效至少在主页(index。php)

我希望根文件夹中只有一个文件:index.php。然后我使用文件夹来组织整个项目(代码,css, js等)。所以index.php的代码如下:

<head>
    <title>Please Activate Javascript</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> 
</head>

<body>

<script language="JavaScript">
    $(document).ready(function() {
        location.href = "code/home.php";
    });   
</script>

<noscript>
    <h2>This web site needs javascript activated to work properly. Please activate it. Thanks!</h2>
</noscript>

</body>

</html>

希望这对大家有所帮助。致以最亲切的问候。

当浏览器中没有启用js时,<noscript>标记中的代码将被执行。 我们可以使用noscript标签来显示msg来打开JS,如下所示。

<noscript>
    <h1 style="text-align: center;">
       To view this page properly, please 
       enable JavaScript and reload the page
    </h1>
</noscript>

同时保持我们的网站内容在身体隐藏。如下

<body>
<div id="main_body" style="display: none;">
    website content.
</div>
</body>

现在如果JS是打开的,你可以让main_body中的内容可见,如下所示

<script type="text/javascript">
    document.getElementById("main_body").style.display="block";
</script>

你可以使用一个简单的JS代码片段来设置隐藏字段的值。当发布回来时,你知道JS是否被启用。

或者你可以尝试打开一个弹出窗口,然后迅速关闭(但可能是可见的)。

你也有NOSCRIPT标签,你可以用它在禁用JS的浏览器中显示文本。

如果javascript被禁用,您的客户端代码将无法运行,所以我假设您的意思是您希望该信息可用的服务器端。在这种情况下,noscript就没那么有用了。相反,我有一个隐藏的输入,并使用javascript填充一个值。在你的下一个请求或回发后,如果值在那里,你知道javascript是打开的。

注意像noscript这样的事情,第一次请求可能显示javascript被禁用,但以后的请求会打开它。

在某些情况下,倒着做就足够了。使用javascript添加一个类:

// Jquery
$('body').addClass('js-enabled');

/* CSS */
.menu-mobile {display:none;}
body.js-enabled .menu-mobile {display:block;}

这可能会在任何复杂的事情上产生维护问题,但对于某些事情来说,这是一个简单的修复。而不是试图检测它什么时候没有加载,只是根据它加载的时候样式。