我已经阅读了多篇文章,如果用户禁用了Javascript,理想情况下,您的网页应该“优雅地降级”。我不确定应该做些什么类型的事情才能实现这一目标。
我有一大堆HTML用于配置'计划'。根据选择框的值,将显示不同的字段。
<select name="schedule.frequency"
id="schedule.frequency"
onChange='updateScheduleFields()' >
<option value="Manual">Run Manually</option>
<option value="Monthly">Monthly</option>
<option value="Weekly">Weekly</option>
<option value="Daily">Daily</option>
<option value="Hourly">Hourly</option>
</select>
当更新选择时,我会隐藏显示的字段,以便在不合适时不显示“星期几”或“月中的日期”等字样。我不确定如何在没有Javascript的情况下优雅地降级,因为如上所述,某些字段完全不适合各种日程表类型。
我的问题是:一般情况下,如何在没有Javascript的情况下制作禁用/隐藏不适当字段的内容或者某些前/后处理是否会正常降级?
我也对我能看到的可以处理这种类型退化的特定网站感兴趣吗?
答案 0 :(得分:13)
基本思想是你有一种标准(非js)的做事方式,然后你添加JavaScript来覆盖这种默认行为。
在您的情况下,您有select
,因此非js行为将是您选择一个选项时,您提交的表单会加载显示不同字段的新版本页面。
您的JavaScript(如果已启用)将隐藏提交按钮并进行就地更新。
考虑它的首选方式是progressive enhancement,并且更容易实现这种方式。使您的页面作为准系统HTML工作,然后使用CSS和JavaScript逐步增强它。然后,如果它会优雅地降级,你就永远无法解决。
如果您的JavaScript和CSS位于单独的文件而不是内联中,则可以更轻松地进行渐进式增强。使用像jQuery *这样的Ajax库,您可以使用CSS选择器选择元素,以便为这些元素添加行为。在你的情况下,你做$('#schedule_frequency').change(updateScheduleFields)
(我不认为你的id应该有一段时间)。
*免责声明:可以在没有库的情况下在JavaScript中选择HTML元素,并且存在除jQuery之外的Ajax库。
答案 1 :(得分:2)
如果您认为网站优雅地降级,请考虑如何在没有任何JavaScript的情况下使用该网站。然后使用javascript和onload / ready挂钩将您网站的元素更改为您最初想要的javascript。这样,如果禁用了javascript,该网站就可以运行。如果启用,则设置javascript将运行并转换页面。
通常这意味着有一个额外的“提交”按钮,你的设置javascript隐藏或类似的东西。
答案 2 :(得分:1)
在这种情况下我要做的是在下拉列表下方有一个“下一步”按钮,用于将选择发布到服务器。然后,您需要服务器端逻辑来显示/隐藏字段。我通常会首先以这种方式工作,然后返回并添加Javascript天赋以隐藏按钮并防止往返。
答案 3 :(得分:0)
我认为简短的回答是你不会做那些类型的事情。对渲染页面的运行时修改是通过JavaScript实现的 - 当它被禁用时,你不会使用这些类型的效果。
此外,如果没有JavaScript,您将不会进行事后处理。您需要在后端实施检查/测试。