【问题标题】:How to detect if a user had javascript disabled?如何检测用户是否禁用了javascript?
【发布时间】:2011-02-25 19:23:04
【问题描述】:

我正在和一位朋友谈论他们的浏览器中没有启用 javascript 的用户,以及如何向他们展示您网站的“无 javascript”版本。

有可能吗?如何做到?

想法?

【问题讨论】:

  • @BalusC:可能你是对的,但你是如何得出结论认为标题中出现的单次出现的 JavaScript 比正文中出现的两次出现的 Java 更重要?
  • 我认为@BalusC 正在制作这个徽章 :) meta.stackexchange.com/questions/30965/…

标签: javascript detect browser-detection


【解决方案1】:

如果您指的是 javascript,请查找 <noscript> HTML 标记。

【讨论】:

    【解决方案2】:

    不要尝试构建单独的 JS 和非 JS 版本的网站。构建一个非 JS 版本,然后 enhance it with JS。这使得代码重用变得更容易,允许您将object/feature detection 用于整个堆栈,并且如果开发人员更新站点的一个分支但没有更新,那么没有 JavaScript 的用户不太可能被抛在后面另一个。

    【讨论】:

    • 没有不尊重,但你所说的“增强”将是令人失望的低级。要么这样,要么你从一开始就瞄准低位。否则,您仍然会使用本质上是两个不同版本的网站,这两个版本都必须维护。
    • 关于 Robusto,它并不是真正的 2 个版本的网站。这是一个工作站点,always,但为 javascript 用户提供了额外的 功能。 Dorward 先生的建议很中肯,并且与多年来之不易的可用性数据相吻合。它使站点更具容错性,并且根据我的经验,更易于维护。
    【解决方案3】:

    您可以放置​​一些代码来记录/跟踪/提醒您使用该标签禁用 JavaScript 的用户。

    <noscript>
       // Do Something
    </noscript>
    

    【讨论】:

      【解决方案4】:

      如果您在谈论 JavaScript 并希望为那些没有 JavaScript 的人提供替代版本的网站,只需给他们提供没有的网站并将其放在页面顶部:

      <script type="text/javascript">
           location.replace('http:javascript-version-of-your-site');
      </script>
      

      【讨论】:

      • 反之更好 - 您可以通过将更常见的场景设为默认值来避免重定向。请参阅下面的评论。
      • 元刷新选项也是个好主意,但可能对搜索引擎不友好,并且可能会导致浏览器的“后退”按钮出现问题,一些让你禁用JS的浏览器仍然忽略@ 987654322@ 元素。
      【解决方案5】:

      像这样:

      <html>
      <head>
      <noscript>
      <meta http-equiv="refresh" content="0;url=http://foo/noscript.htm" />
      </noscript>
      </head>
      <body>
      ...
      

      只有在浏览器上没有启用脚本时才会执行元刷新(声明式重定向)。当然,noscript 标签只有拥有 javascript 引擎的浏览器才能理解。如果您试图捕获根本没有 javascript 的浏览器(我不知道有多少),那么这将不起作用。

      【讨论】:

      • 一些带有 JS 引擎的浏览器会忽略 noscript 标签,但是当它被禁用时不会执行任何 JS,使页面无法正常工作。
      • noscript 元素不允许作为 head 元素的子元素,并且 meta 元素不能是 noscript 元素的子元素。 w3.org/TR/html4/interact/scripts.html#h-18.3.1
      • 哦,w3 建议。建议,而不是规则。如果 HTML 被严格执行,万维网将会小很多。
      【解决方案6】:

      向您开放的另一个选项,而不是明显的 noscript 标记是使用 JavaScript 删除 cookie,然后测试该 cookie 并适当地传递内容。 javascript 版本与非重定向或跨度

      只是想我会把它扔在那里..

      【讨论】:

        【解决方案7】:

        我使用这种 JavaScript 和 CSS 的组合

        <html>
        <style type="text/css">
            .js-on
            {
                display: none;
            }
            .js-off
            {
                background: red;
                color: White;
            }
         </style>
         <div id='jsdetect' class='js-off'><b>Javascript is OFF</b></div>
         <script type="text/javascript">
            document.getElementById('jsdetect').className = 'js-on';
         </script>
        
        </html>
        

        如果您的唯一目的是告诉用户 Javascript 不可用并且该网站将无法运行,这将非常有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 2013-09-29
          • 2011-03-09
          • 1970-01-01
          • 1970-01-01
          • 2011-12-06
          • 1970-01-01
          相关资源
          最近更新 更多