Page 48 - JavaScript修炼之道
P. 48

36       第三部分  UI技巧


             任务 16  实现“无限翻页”


                 无限翻页是Gmail给我们带来的概念,它在几个应用场景下的应用宣告了分页导航的末日。
             许多人(尽管不是所有人)都发现,在浏览大量条目时无限翻页更有效,于是就都倾向于使用视
             觉模式匹配,而不是移动鼠标去一次又一次地单击分页链接。

                 分页导航几乎只是基于技术原因提出的。

                   老版浏览器渲染慢,这使我们不得不保持页面“足够轻便”。
                   客户端和服务器之间任何一处都可能有带宽限制,这也要求我们减少页面大小。
                   服务器端的处理时间随着数据增多而增加。一次性渲染整个数据集不仅是浪费,而且对
                   服务器来说也不可行(至少是不现实和笨拙的),尤其是服务器想要处理足够多的并发请
                   求时。

                 分页导航只不过是一种方法,一种不用JavaScript的方法。启用了JavaScript之后,如果用无
             限翻页比较合适的话,你就可以不再用任何分页链接,而用无限翻页来代替它们。至于是否采用
             无限翻页,这就得交给你的用户可用性专家以及你的合理直觉来判断了。

                 在右页的代码中可以看到,无限翻页并没有什么特别奇特的地方。唯一比较棘手的就是跨浏
             览器正确计算长度比较麻烦,这从lowEnough()方法的代码中可以很明显地看到。

                 我们实质上是在判断文档底部离当前显示区域底部是否已不太远。这只不过是足够频繁地检
             查垂直滚动条的当前状态,每秒10次足够了!然后用Ajax载入更多内容。

                 考虑到可用性(和容错),你或许也需要提供分页导航:把Next链接设置为默认隐藏,如果
             Ajax获取数据失败就显示这些链接,这样用户还可以回到用分页链接来操作的状态。

                 给手头没有PHP服务器的读者一个提示:作为demo来说,可以不用访问服务器,客户端直
             接载入更多内容就能看到效果,这里的PHP代码只不过是在返回静态内容前等待半秒以模拟载
             入时间。
   43   44   45   46   47   48   49   50   51   52   53