获取当前所在目录有问题?

来源:3-12 目录功能实现

VyingGao

2018-09-03 14:07

通过 Rendition.currentLocation() 可以获取当前位置相关信息,
该方法返回的数据中主要是 start 和 end 对象,这两个对象均有以下字段:
cfi、displayed、href、index、location、percentage。
1 在触发翻页的时候打印 start 和 end 对象,
发现两者除了 cfi 字段有差异外,其他字段值都保持相同。
请教下老师这两个字段有什么不同的意义?
2 在获取当前所在目录时,发现每个目录的第一页获取值存在异常,
即该页是前一个目录的最后一页,当进入某目录第二页时,才能正确获取当前目录。
https://img.mukewang.com/5b8ccf0c0001274016001005.jpg




写回答 关注

3回答

  • Sam
    2018-09-03 21:20:03
    已采纳

    你好,第一个问题,start表示当前页的起始位置,end表示当前页的末尾位置,第二个问题,需要看下你的源码,应该是你调用Rendition.currentLocation() 的时机有问题,没有选择到正确的钩子函数

    VyingG... 回复Sam

    老师,源码在这个问题的另外一个回答里。

    2018-09-04 10:06:54

    共 6 条回复 >

  • 面包与理想
    2019-01-17 16:56:21

    this.rendition.currentLocation()获取还是空,楼主解决了吗?


    VyingG...

    同学,不晓得你后来有没有解决这个问题。我前几天整理电脑,正好看了下这项目。这个方法是异步的:currentLocation(): (displayedLocation|promise),返回promise对象。所以一开始有些数据不对,要过一会儿才能正常。http://epubjs.org/documentation/0.3/#rendition 这个Epub.js解析引擎本身问题就挺多的。

    2022-01-24 16:58:28

    共 1 条回复 >

  • VyingGao
    2018-09-04 10:06:14
    this.Book = new EPub(DOWNLOAD_URL)
    this.Rendition = this.Book.renderTo('render', { width, height })
    this.Rendition.display().then(() => { this.Rendition.currentLocation() })
    this.Book.ready.then(() => {
        this.Navigation = this.Book.navigation
        this.Locations = this.Book.locations
        this.Locations.generate()
        this.bookReady = true
        this.catalogList = this.Navigation.toc
    })
    this.Rendition[action]() // 翻页操作
    console.log(this.Rendition.currentLocation().start)

    Sam

    翻页后,获取当前位置的方法需要调整一下: this.rendition.next().then(() => { console.log(this.rendition.currentLocation()) })

    2018-09-04 14:53:55

    共 1 条回复 >

快速入门Web阅读器开发

带你了解电子书阅读器的工作原理,通过Vue.js快速实现Web阅读器

26396 学习 · 214 问题

查看课程

相似问题