【问题标题】:Full page reaload for ajax when Javascript is disabled禁用 Javascript 时为 ajax 重新加载整页
【发布时间】:2019-01-30 16:21:51
【问题描述】:

我正在使用 JSF2。

我有一个按钮,它调用一个动作,然后呈现页面的一部分(非常基本)

 <h:commandButton value="foo" action="#{myBean.myAction}" >
              <f:ajax execute="@form" render="#content" />
  </h:commandButton>

该网站需要可供残障人士使用,因此我需要在禁用 JavaScript 时支持浏览。

对我来说最好的解决方案是在禁用 JS 时完全重新加载页面。

我想在第一页加载时设置一个 cookie,说明 js 是否在这里,然后如果 js 在这里,则使用 render="someBeanThatReadsCookies" 显示一个 ajaxed 按钮,如果没有,则显示一个普通按钮,但我稍微找到了这个解决方案丑。

如果有人有更优雅的解决方案,我会很高兴。

我知道问题与这个问题非常相似 Ajax fallback when Javascript is disabled

但是,我认为给定的答案并不令人满意。我已经在使用 commandButtons 并且禁用 JS 只是让按钮什么都不做。

【问题讨论】:

  • 什么样的残疾?我不是这方面的专家,但从我阅读的内容来看,“ARIA”规范非常适合 启用 Javascript 的浏览器。
  • 盲人/视障人士倾向于禁用 JS,因为有太多网站使用 JS 会妨碍屏幕阅读器
  • Hmmmm... 如果禁用了 js,您确定具有阻碍屏幕阅读器的 js 的网站可以正常工作吗?我个人认为他们不会。所以禁用 javascript 的最终结果是空的。但话又说回来,我只使用具有相当好的 ARIA 支持和 JS 的 PrimeFaces(并且从未收到让网站在禁用 javascript 的情况下完全正常运行的请求)。
  • 好吧,我并没有禁用自己,所以我不太确定,但我的规范的一部分是禁用 JS 不得妨碍任何操作.....T_T 使用 p:commandButton 很好几乎相同。当 JS 处于停用状态时,按钮将变得无用。
  • 99.9% 的严重网络框架在禁用 javascript 时变得无用。 -> 99.9% 的 Web 应用程序变得无用。而且由于 ARIA 规范确实需要禁用 javascript,我认为没有理由禁用它。按钮只是第一件事,如果你想制作一个对非残疾人用户和残疾人用户都友好的完整应用程序,后者不使用javascript,几乎就像开发两个应用程序(最终可能会更容易)

标签: javascript ajax jsf progressive-enhancement graceful-degradation


【解决方案1】:

对于任何感兴趣的人,Bootsfaces 库都提供了我正在寻找的行为。

 <b:container id="update-me" > 
       <b:commandButton value="button" ajax="true" update="update-me" action="#{barreOutilsControleur.fontSizePlus}"  >
       </b:commandButton>
 </b:container>

当JS被禁用时它会重新加载页面^^。

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2011-09-12
    • 2017-09-17
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多