一尘不染

如何检测是否禁用了JavaScript?

javascript

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

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

最终,我想将它们重定向到可以在没有JS的情况下运行的内容,但是我需要将此检测作为占位符才能启动。


阅读 522

收藏
2020-04-23

共2个答案

一尘不染

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

没有执行服务器端JavaScript检测的好方法。作为替代方案,可以使用JavaScript设置cookie,然后在后续的页面浏览中使用服务器端脚本测试该cookie。但是,这将不适合确定要传递的内容,因为它将无法区分没有cookie的访问者与新访问者或阻止cookie的访问者。

2020-04-23
一尘不染

我想在这里添加我的.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的功能……如果对Google足够好,那么对我的小网站也足够了。

2020-04-24