关于html:如何检测JavaScript是否被禁用?

How to detect if JavaScript is disabled?

今天早上有篇文章问有多少人禁用了javascript。然后我开始想,可以使用什么技术来确定用户是否禁用了它。

有人知道一些简短/简单的方法来检测是否禁用了javascript吗?我的目的是警告用户,如果没有启用JS的浏览器,站点将无法正常运行。

最终,我希望将它们重定向到能够在缺少JS的情况下工作的内容,但是我需要从这个检测作为一个占位符开始。


我想在这里加上我的.02。它不是100%防弹的,但我认为它足够好了。

对于我来说,举一个"没有javascript这个站点不能很好地工作"的首选例子,问题是你需要确保你的站点在没有javascript的情况下工作正常。一旦你开始走这条路,你就会开始意识到网站应该是防弹的,JS关闭了,这是一个很大的额外工作。

所以,你真正想要的是"重定向"到一个说"打开JS,傻瓜"的页面。但是,当然,您不能可靠地执行元重定向。所以,建议如下:

1
2
3
4
5
6
7
8
<noscript>
    <style type="text/css">
        .pagecontainer {display:none;}
    </style>
   
    You don't have javascript enabled.  Good luck with that.
   
</noscript>

…其中站点中的所有内容都用一个"pagecontainer"类的分区包装。然后,noscript标记中的css将隐藏所有页面内容,并显示您希望显示的任何"no js"消息。这实际上是Gmail所做的……如果它对谷歌足够好,对我的小网站来说就足够好了。


我假设您正试图决定是否交付JavaScript增强的内容。最好的实现会完全降级,因此站点仍然在没有JavaScript的情况下运行。我还假设您的意思是服务器端检测,而不是出于无法解释的原因使用

没有一种好的方法来执行服务器端的javascript检测。另一种选择是,可以使用javascript设置cookie,然后在随后的页面视图上使用服务器端脚本测试该cookie。但是,这不适合决定交付什么内容,因为它无法区分没有cookie的访问者和阻止cookie的新访问者或访问者。