Javascript Ajax优雅降级,具有不同的页面?

时间:2009-10-06 07:02:23

标签: javascript ajax graceful-degradation

我开始更多地关注让我的javascript和ajax优雅降级。更推荐哪个:

  • 致力于将优雅降级合并到现有代码中(可能很棘手) 或
  • 为非js用户开发不同的页面集。

我倾向于不同的页面集,因为我觉得它更容易,我可以为每种用户类型(js-enabled或js-disabled)提供最佳结果。你同意我的意见吗,如果没有,你为什么不同意?

我也担心黑客攻击。例如,黑客进入启用js的版本,然后禁用他的js。关于这一点的任何想法?我不太了解黑客攻击,但如果我使用不同的版本,这可能是一个安全问题吗?

提前致谢

3 个答案:

答案 0 :(得分:5)

虽然它对现有网站效果不佳,但使用渐进增强范例通常更有用:构建网站使其无需特殊插件即可使用,然后开始层叠您的精彩内容除此之外。

通过这种方式,您可以确保它从头开始工作,每个人(包括使用屏幕阅读器的人,关闭图像或样式表的人以及不使用javascript的人)都可以访问您的网站。

但是,对于现有网站,它将取决于ajax提供的功能。通常,您应该努力镜像禁用js的所有ajax功能。如果您的js版本中存在安全漏洞,那么您的非js版本也可能存在安全漏洞。 AJAX无法访问任何无法通过普通URL访问的内容。

答案 1 :(得分:2)

开发两个独立的页面集,一个用于启用JS,一个用于非JS,显然是很多工作,不仅是最初的,而且随着应用程序的不断发展。如果这不会打扰你太多,我认为这是要走的路。我认为你对同页优雅的退化是正确的,有时候非常棘手。有时候这只是因为布局:启用JS后,您可以简单地隐藏和显示元素,而没有JS:在哪里放置所有内容?单独的页面集可以帮助保持页面结构更清晰。

关于黑客攻击:您永远不会,永远不会依赖客户端JavaScript验证。必须在服务器端检查(或重新检查)所有内容,并且您的服务器端代码可能不会对用户输入做任何假设。因此,我认为有人在使用应用程序时取消激活JS的情况是无关紧要的。尝试保持非JS和JS版本的预期用户输入统一,正确验证,并且你很好。

答案 2 :(得分:0)

您可能想要查看jQuery Ajaxy。它可以让您优雅地将您的网站升级为功能齐全的ajax,无需任何服务器端修改,因此一切仍适用于禁用javascript的用户和搜索引擎。它还支持哈希,因此您的后退和前进按钮仍可正常工作。

已在这两个网站上实施(我知道)http://wbhomes.com.auhttp://www.balupton.com