检测JavaScript是否被禁用


Detect if JavaScript is disabled

是否有任何方法可以检测用户是否在加载页面后禁用JavaScript 以便呈现<noscript>标记?服务器端或客户端都可以

您可以尝试将图像放入<noscript>标记中,这将指向您的php文件,反过来它应该返回图像。这可以让你在服务器上知道用户禁用了Javascript。

如何识别用户:您可以依赖会话,或者将ID设置为图像的url。

你可以用这个问题的答案作为一个例子,如何从一个php脚本服务器图像文件,你可以添加你的逻辑来检测用户是否禁用了js:

返回一个PHP页面作为图像

这是我很久以前从一本书中得到的一个想法

<script>
document.cookie= "js_enabled=true";
</script>

在你看到的首页上使用上面的内容。然后在下一个请求中检查该cookie,看看是否启用了javascript。当然,如果cookie被禁用,这也有同样的缺陷。

no…任何一种这样的检测在页面加载后都必须被js检测到,如果它被禁用,它甚至不能做任何事情。

为什么不一直呈现NOSCRIPT标签呢?这就是标签的意义所在,在JS被禁用时提供内容。如果用户看到的是NOSCRIPT's中的内容,那么他们显然没有启用JavaScript。

还可以在页面加载时调用JavaScript AJAX。如果您的服务器接收到对页面的请求,但是在标准加载时间框架内没有收到客户端的AJAX调用,那么服务器可以假定客户端不接受JS。注意,这并不完美,但您在这里处理的是客户端JS。

我不认为真的有一个很好的方法来做服务器端JS检测。<noscript>是指定非javascript内容的语义方式-所以我想,而不是检测如果JS被禁用,你应该检测它是否启用。默认情况下,您可以隐藏检测,并在<noscript>中放入<style>块以取消隐藏。