检测JavaScript是否已禁用

时间:2011-07-26 18:19:28

标签: php javascript html css

有没有办法可以检测用户是否在>加载页面后禁用了JavaScript 以便呈现<noscript>个标记?服务器端或客户端都没问题。

5 个答案:

答案 0 :(得分:5)

您可以尝试在<noscript>标记内放置一个图像,该标记将指向您的php文件,而该文件又应返回图像。这可以让您在服务器中知道用户已禁用Javascript。

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

您可以使用此问题的答案作为如何从php脚本服务器图像文件的示例,您可以在其中添加逻辑以检测用户是否已禁用js:

Return a PHP page as an image

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

不...在加载页面之后任何类型的这种检测都必须用js检测,如果它被禁用,它甚至都不能做任何事情。

答案 3 :(得分:1)

为什么不一直只渲染NOSCRIPT标签?这就是该标记的重点,即在禁用JS时提供内容。如果用户看到NOSCRIPT中的内容,那么他​​们显然没有启用JavaScript。

您还可以在页面加载时激活JavaScript AJAX。如果您的服务器收到页面请求,但是在标准加载时间范围内没有收到客户端的AJAX调用,那么服务器可以假设客户端不接受JS。不是很完美,但是你在这里处理客户端JS。

答案 4 :(得分:0)

我认为没有一种好的方法可以进行服务器端的JS检测。 <noscript>是指定非javascript内容的语义方式 - 所以我想要检测JS是否被禁用,你应该检测它是否已启用。您可以默认隐藏检测,并在<style>内放置<noscript>块以取消隐藏。