1.需求分析
- 参考设计
- 功能点分析
- 1 页面打开时,用户视角里的图片已经加载完成(1-2页)
- 2 没有加载的页码 用 加载占位符 代替
- 3 快速拖动 不加载 (经过的每一页) 当用户在某一页有所停顿时,加载附近几页。当用户停顿在占位符的时候加载附近几页
- 功能点分析
- 当前业务需求不同点
- 1 pdf文件中每一页大小不固定
- 2 同一个页面 有两套 pdf 浏览插件(导航,预览),他们公用 的数据源是一致(一张文件图片只能加载一次)
- 3 当文件 经过数字签名后
- 一 .签名的页码 置空为 占位符(所有经过签名的页码)
- 二. 用户视角内的文件必须立马 重新转 图片(所传递的参数 不一致)
- 1 pdf文件中每一页大小不固定
- 当前业务所需功能点
- 1 页面能正常浏览 不卡顿,不耗时,滚动条不能瞬间移位
- 2 支持页码定位
- 3 支持放大,缩小
- 4 导航区域的 文件图片 每页 按 固定宽度 缩放
- 5 浏览区域的 文件图片 按正常比例 缩放
- 6 导航区域能 快速定位 到 浏览区域
- 7 导航区域能 跟随浏览区域 移动
- 8 用户可视区域内 不能有占位符 (当页面缩小时,用户可视区域可能 会有 很多页,那么那些页面是已经 加载并渲染完成的)
- 9 兼容主流浏览器,IE兼容到9
2.设计思想
- 文件图片加载流程
- 1 未加载的页码
- 2 已加载未渲染 (得到页面图片链接,未将图片加载到浏览器缓存中,不增加浏览器内存)
- 3 已渲染
- 一个文件图片的数据
- page 页码
- width 宽度(缩放后的)
- height 高度(缩放后的)
- zoomRate 页面图片缩放比例
- imagePage 图片链接
注:因为这里涉及到很多 因为业务还改的内容,我这里将两者分开,如果不加业务插件,就相当于一个独立的插件
业务控制
1.生产一个回调事件
2.正常加载请求–>调参数控制–>请求控制
假设文档有二百页,用户在第二页向下滚动,那我的提前加载(3,4,5)
假设文档有二百页,用户在第二页,急速定位到 100页,那么(就要加载 100 页的前后三页)向上滚动就加载 100 之前的页,向下滚动就加载 100 之后的页码
假设文档有二百页,用户在第二页 突然将滚动条拖到中间 50页的位置那么,用户暂停,那么我就必须加载 50页 的前三页 和 后三页
以上就要 得到滚动条是暂停,向下滚动,向上滚动,非正常滚动
根据以上需求我写了一个 滚动条的插件