【问题标题】:Ruby on Rails, Javascript detectionRuby on Rails,Javascript 检测
【发布时间】:2009-04-13 22:22:57
【问题描述】:

我正在创建一个使用 Rails 内置辅助函数向站点添加 ajax 功能的 Web 应用程序。我不希望用户能够在没有 JS 的情况下使用该应用,因为它无法正常运行。

我需要能够防止这种情况发生。我怎样才能阻止用户在没有 JS 的情况下加载我的任何页面?

我尝试在布局中使用标签。这会检测到 JS 的缺失,但仍会呈现视图。将脚本标签放在 yield 周围可以防止呈现任何视图。

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

    您可以在 head 元素中包含一个带有元刷新标记的 noscript 块。示例:

    <head>
        <!-- title, scripts, css etc go here -->
        <noscript>
            <meta http-equiv="refresh" content="2;url=http://yoursite.com/nojswarning.html">
        </noscript>
    </head>
    

    您可以阅读有关元刷新的更多信息here

    希望对你有帮助

    编辑:为了澄清,noscript 标记仅在用户关闭 JavaScript 时运行。所以在这种情况下,如果 JS 被关闭,用户将被重定向到http://yoursite.com/nojswarning.html。当然,您可以将其更改为您想要的任何网站上的任何页面。

    【讨论】:

    • 工作得很好,谢谢!对于我们来说,我们在public/ 目录中创建了一个javascriptdisabled.html 文件,该文件与500.html 错误页面具有相同的样式。然后使用&lt;meta http-equiv="refresh" content="2;url=#{ root_url + "javascriptdisabled.html" }"&gt;根据你所处的环境动态生成URL。
    【解决方案2】:

    简单的答案是通过 JS 加载整个应用程序。这样一来,该应用将永远不会显示给启用了 JS 的人。

    另一种方法是使用 iframe 开始您的页面,该 iframe 会加载到 JS 检查页面。该页面所做的只是通过 JS 将用户重定向到应用程序的真实 URL。因此,如果用户没有 JS,他们将不会被重定向(您可以通知他们他们需要带有

    【讨论】:

      【解决方案3】:

      &lt;noscript&gt;&lt;/noscript&gt; 似乎可以工作。我会将默认设置为带有覆盖的小型加载器,如果客户端不支持 javascript,则 javascript 永远不会隐藏加载器。 &lt;noscript&gt; 标记中的内容将与叠加层一起显示。

      【讨论】:

        猜你喜欢
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多