【问题标题】:Detect if JavaScript is disabled检测 JavaScript 是否被禁用
【发布时间】:2011-10-13 15:49:20
【问题描述】:

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

【问题讨论】:

  • Afaik 这是不可能的。
  • @marc 请注意我在页面加载后 是怎么说的。您链接到的帖子仅在页面加载时有效。
  • 你能解释一下你想要达到的目标吗?
  • 为什么要全局禁用javascript?谷歌也只适用于 javascript。您还应该创建一个不使用 javascript 的版本,并在此站点上告诉访问者,他应该激活 javascript

标签: php javascript html css


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如何识别用户:可以依赖会话,或者给图片的url设置一个ID。

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

    Return a PHP page as an image

    【讨论】:

      【解决方案3】:

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

      您还可以在页面加载时触发 JavaScript AJAX 调用。如果您的服务器收到页面请求,但在标准加载时间范围内未收到客户端的 AJAX 调用,则服务器可以假定客户端不接受 JS。不完美,但你在这里处理的是客户端 JS。

      【讨论】:

      • 我喜欢这个想法,但可能很难判断 JavaScript 是否实际上已关闭或页面刚刚关闭。
      【解决方案4】:

      我不认为真的有很好的方法来进行服务器端 JS 检测。 <noscript> 是指定非 javascript 内容的语义方式 - 所以我想与其检测 JS 是否被禁用,不如检测它是否被启用。您可以默认隐藏检测,并在<noscript> 内放置一个<style> 块以取消隐藏。

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-21
          • 1970-01-01
          • 2011-02-25
          • 2022-01-20
          • 2014-04-20
          • 2010-10-06
          相关资源
          最近更新 更多