关于电子书分页问题

来源:10-13 后端API源码上传git演示

如雨

2019-07-30

图片描述
调试的时候才发现有些电子书分页会出现上图的情况,有些又是正常分页,一直找不到原因,能麻烦老师帮调试一下吗,地址https://github.com/HenryNer/firstWrapper

下面是修改后的
图片描述

写回答

1回答

Sam

2019-07-30

hi,这个问题涉及到分页算法,因为课时有限,所以没有穷举所有的翻页算法,会出现上述问题的原因是因为navigation获取的目录名称和通过locations获取的目录名称不一致导致,解决方法如下:

修改EbookReader.vue 238行,替换为如下代码,改动部分已经注释:

locations.forEach(item => {
    const loc = item.match(/\[(.*)]!/)[1]
    this.navigation.forEach(nav => {
        if (nav.href) {
            // 兼容xhtml的文件的场景,优化了正则表达式
            let href = nav.href.match(/\/(.*)\.xhtml$/)
            // 如果没有匹配到,则再使用html正则进行匹配
            if (!href) {
                href = nav.href.match(/^(.*)\.html$/)
            }
            if (href) {
                // loc只要包含href[1]中的内容,则认为包含在该目录下
                if (loc.indexOf(href[1]) >= 0) {
                    nav.pagelist.push(item)
                }
            }
        }
    })
    let currentPage = 1
    this.navigation.forEach((nav, index) => {
        if (index === 0) {
            nav.page = 1
        } else {
            nav.page = currentPage
        }
        currentPage += nav.pagelist.length + 1
    })
})


0
2
Sam
回复
如雨
额,算法还有优化点,晚点我再看下
2019-07-31
共2条回复

Vue 实战商业级读书Web APP完整项目

Vue全家桶+最新前端技术+前后端分离架构,完整项目流程

1610 学习 · 1951 问题

查看课程