Javascript Ajax 优雅降级,有不同的页面?
Posted
技术标签:
【中文标题】Javascript Ajax 优雅降级,有不同的页面?【英文标题】:Javascript Ajax Graceful-degradation, with Different Pages? 【发布时间】:2010-12-04 04:27:59 【问题描述】:我开始更加关注如何让我的 javascript 和 ajax 优雅地降级。哪个更推荐:
致力于将优雅降级合并到现有代码中(可能很棘手) 或 为非 js 用户开发不同的页面集。我倾向于使用不同的页面集,因为我觉得这样更容易,而且我可以为每种用户类型(启用 js 或禁用 js)提供最佳结果。你同意我的观点吗?如果不同意,你为什么不同意?
我也担心黑客攻击。例如,黑客进入启用 js 的版本,然后禁用他的 js。关于这一点有什么想法吗?我不太了解黑客攻击,但如果我使用单独的版本,这会是一个安全问题吗?
提前致谢
【问题讨论】:
【参考方案1】:开发两组单独的页面,一组用于启用 JS 的页面,另一组用于非 JS 页面,显然需要大量工作,不仅是最初,而且随着您的应用程序不断发展。如果这不会让你太困扰,我认为这就是要走的路。我认为您对有时非常棘手的同页优雅降级是正确的。有时这只是因为布局:启用 JS 后,您可以简单地隐藏和显示元素,而没有 JS:将所有内容放在哪里?单独的页面集有助于保持页面结构更简洁。
关于黑客攻击:您永远、永远、永远都不能依赖客户端 JavaScript 验证。必须在服务器端检查(或重新检查)所有内容,并且您的服务器端代码可能不会对用户输入做出任何假设。因此,我认为有人在使用应用程序时停用 JS 的场景是无关紧要的。尝试保持非 JS 和 JS 版本的预期用户输入统一,正确验证它,你很好。
【讨论】:
【参考方案2】:您可能想查看jQuery Ajaxy。它可以让您优雅地将您的网站升级为功能齐全的 ajax 网站,而无需进行任何服务器端修改,因此一切仍然适用于禁用 javascript 的用户和搜索引擎。它还支持哈希,因此您的后退和前进按钮仍然有效。
它已在这两个站点(我知道)http://wbhomes.com.au 和 http://www.balupton.com 上实施
【讨论】:
【参考方案3】:虽然它不适用于现有网站,但通常使用 渐进式增强 范式会更有用:构建网站以使其无需特殊插件即可运行,然后开始分层展示您的精彩最重要的是。
这样您就可以确保它从头开始工作并且每个人(包括使用屏幕阅读器的人、关闭图像或样式表的人以及不使用 javascript 的人)都可以访问您的网站。
但是,对于现有网站,这将取决于 ajax 提供的功能。一般来说,您应该努力在禁用 js 的情况下镜像所有 ajax 功能。如果您的 js 版本中存在安全漏洞,那么您的非 js 版本中可能也会存在安全漏洞。 AJAX 无法访问无法通过普通 URL 访问的任何内容。
【讨论】:
以上是关于Javascript Ajax 优雅降级,有不同的页面?的主要内容,如果未能解决你的问题,请参考以下文章
优雅的 javascript - 在发生 3 个不同的 AJAX 请求时触发函数