【问题标题】:RoR with JavaScript disabled禁用 JavaScript 的 RoR
【发布时间】:2013-09-25 14:17:35
【问题描述】:

当有人禁用 JavaScript 时,Ruby on Rails 3.2 和 4.0 中是否有任何后备机制?

应用程序将如何反应,特别是在使用 ajax 请求时。它会回退到正常请求吗?

我问这个是因为我需要一个网站,它也可以处理来自文本浏览器的残疾人请求。

如果没有默认后备,有哪些策略。

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3.2 ruby-on-rails-4


    【解决方案1】:

    看到这篇文章。 Stop loading the page if Javascript is disabled

    一般来说,我真的不能在这里考虑任何回退机制 - 请注意,rails 完成的大部分请求实际上是 ajax 请求,因为不可能发送 PUT 或 DELETE(而不是删除请求,rails 发送data: {"_method"="delete"} 的 ajax 发布请求)。

    简而言之,对我来说禁用 JS 会严重破坏页面,我今天要去测试它。

    【讨论】:

    • 这不是一个 AJAX 请求,它只是一个 Rack::MethodOverride 中间件,它在请求中搜索 _method 参数并相应地更改动词。
    【解决方案2】:

    我对 RoR 的经验并不丰富,但我怀疑这更多是关于您如何设计前端架构的问题。我有限的理解是,RoR 没有提供任何“开箱即用”的 javascript;它的默认状态是创建生成平面 HTML 的视图,您可以使用 JS 和 CSS 来装饰您喜欢的样式。

    您的 HTML 应该这样编写,用户应该能够访问他们最感兴趣的所有内容,而不必依赖 JavaScript 来完成。这意味着您应该只使用 JS 来增强体验。用通用前端实践的语言,做渐进增强

    【讨论】:

      【解决方案3】:

      经过一番研究,我找到了答案:

      Ruby on Rails 使用不显眼的 javascript 来实现这一点。如果禁用了 javascript,任何 Ajax 请求都会优雅地“降级”为普通的 POST 或 GET 请求。唯一不能开箱即用的操作是删除,因为它是唯一不完全被所有浏览器原生支持并且需要 js 的请求。

      在该 railscast 中了解更多信息:http://www.youtube.com/watch?v=t_MBLfrKTiE

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多