如何检测 JavaScript 是否被禁用?

2022-08-29 22:35:01

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

有谁知道一些简短/简单的方法来检测JavaScript是否被禁用?我的目的是发出警告,即如果没有启用JS的浏览器,该网站将无法正常运行。

最终,我希望将它们重定向到能够在没有JS的情况下工作的内容,但是我需要将此检测作为占位符才能开始。


答案 1

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

对我来说,提出某种“这个网站在没有Javascript的情况下就不能很好地工作”消息的首选例子是,你需要确保你的网站在没有Javascript的情况下可以正常工作。一旦你开始沿着这条路走下去,你就会开始意识到,在关闭JS的情况下,这个网站应该是防弹的,这是一大堆额外的工作。

所以,你真正想要的是一个“重定向”到一个页面,上面写着“打开JS,愚蠢”。但是,当然,您无法可靠地进行元重定向。所以,这是建议:

<noscript>
    <style type="text/css">
        .pagecontainer {display:none;}
    </style>
    <div class="noscriptmsg">
    You don't have javascript enabled.  Good luck with that.
    </div>
</noscript>

...其中,您网站中的所有内容都用类“pagecontainer”的div包装。然后,noscript 标签内的 CSS 将隐藏所有页面内容,并显示要显示的任何“no JS”消息。这实际上是Gmail似乎在做的事情...如果它对谷歌来说足够好,那么对我的小网站来说也足够好了。


答案 2

我假设您正在尝试决定是否提供JavaScript增强的内容。最好的实现会干净利落地降级,因此站点仍然可以在没有JavaScript的情况下运行。我还假设您的意思是服务器端检测,而不是出于无法解释的原因使用<noscript>元素。

没有执行服务器端 JavaScript 检测的好方法。作为替代方案,可以使用JavaScript设置cookie,然后在后续页面查看时使用服务器端脚本测试该cookie。但是,这不适合决定提供哪些内容,因为它无法将没有cookie的访问者与新访问者或不接受JavaScript集cookie的访问者区分开来。