| | |
| | | :style="{ |
| | | fontSize: fontSize ? fontSize + 'px' : '16px', |
| | | transform: `scale(${pageZoom ? pageZoom : 1})`, |
| | | transformOrigin: 'center top' |
| | | transformOrigin: 'center top', |
| | | }" |
| | | > |
| | | <pageHeader |
| | |
| | | observer: null, |
| | | loadPageObserver: null, |
| | | loadPageList: [], |
| | | questionData: {} |
| | | questionData: {}, |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | }, |
| | | pageZoom() { |
| | | return this.$store.state.qiankun.scale / 100; |
| | | } |
| | | }, |
| | | }, |
| | | watch: { |
| | | showCatalogList: { |
| | |
| | | ) { |
| | | // 调用父层方法 |
| | | this.$store.state.qiankun.catalogChange({ |
| | | showCatalogList: newVal |
| | | showCatalogList: newVal, |
| | | }); |
| | | } |
| | | // 启动页码观察 |
| | |
| | | }, |
| | | loadPageList: { |
| | | handler(newVal, oldVal) { |
| | | console.log(newVal, "this.loadPageList"); |
| | | setTimeout(() => { |
| | | this.initSwiper(); |
| | | this.initViewer(); |
| | |
| | | // 删除笔记、高亮、划线 |
| | | delSign: (data) => { |
| | | this.delSign(data); |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | |
| | |
| | | this.observer = new IntersectionObserver(this.pageChangeCallback, { |
| | | root: null, // 指定根元素,这里设为 null,表示选取整个视窗作为根元素。 |
| | | rootMargin: "0px", // 指定根元素的边界,这里设为 "0px",表示根元素的边界和视窗的边界重合 |
| | | threshold: 0.5 // 指定交叉比例,这里设为 0.5,表示当目标元素一半或更多显示在视窗中时触发回调函数。 |
| | | threshold: 0.5, // 指定交叉比例,这里设为 0.5,表示当目标元素一半或更多显示在视窗中时触发回调函数。 |
| | | }); |
| | | |
| | | this.loadPageObserver = new IntersectionObserver(this.loadPageCallback, { |
| | | root: null, // 指定根元素,这里设为 null,表示选取整个视窗作为根元素。 |
| | | rootMargin: "0px", // 指定根元素的边界,这里设为 "0px",表示根元素的边界和视窗的边界重合 |
| | | threshold: 0 // 指定交叉比例,这里设为 0.5,表示当目标元素一半或更多显示在视窗中时触发回调函数。 |
| | | threshold: 0, // 指定交叉比例,这里设为 0.5,表示当目标元素一半或更多显示在视窗中时触发回调函数。 |
| | | }); |
| | | |
| | | // 启动页码观察 |
| | |
| | | }, 500); |
| | | |
| | | // 测试页面跳转 |
| | | setTimeout(() => { |
| | | this.gotoPage(1, 11); |
| | | // setTimeout(() => { |
| | | // this.gotoPage(1, 15); |
| | | // setTimeout(() => { |
| | | // this.renderSign("Note", { |
| | | // id: "2ACA9359", |
| | |
| | | // }); |
| | | // }, 2000); |
| | | // }, 1000); |
| | | }, 1000); |
| | | // }, 1000); |
| | | }, |
| | | methods: { |
| | | // 滚动监听 |
| | |
| | | this.showCatalogList = [ |
| | | this.catalogLength - 2, |
| | | this.catalogLength - 1, |
| | | this.catalogLength |
| | | this.catalogLength, |
| | | ]; |
| | | } else { |
| | | this.showCatalogList = [catalog - 1, catalog, catalog + 1]; |
| | |
| | | return false; |
| | | } |
| | | } |
| | | //observer 观察每个元素,以便在它们进入或离开视窗时触发回调函数。 |
| | | // observer 观察每个元素,以便在它们进入或离开视窗时触发回调函数。 |
| | | const isObserver = section.getAttribute("observer"); |
| | | const isLoadObserver = section.getAttribute("loadObserver"); |
| | | if (!isObserver) { |
| | |
| | | "chapter" |
| | | ); |
| | | const catalog = catalogDom.getAttribute("num"); |
| | | console.log(page, "page", catalog, "catalog"); |
| | | let text = null; |
| | | if (target.querySelector("p")) { |
| | | console.log(target.querySelector("p").textContent.substring(0, 20)); |
| | | text = target.querySelector("p").textContent.substring(0, 20); |
| | | } |
| | | // 返回页码和章节信息 |
| | |
| | | const target = entry.target; |
| | | const page = target.getAttribute("page"); |
| | | if (this.loadPageList.indexOf(page) == -1) { |
| | | // |
| | | const catalogDom = this.tool.getParentNodeByClassName( |
| | | target, |
| | | "chapter" |
| | |
| | | chapterTen, |
| | | chapterEleven, |
| | | chapterTwelve, |
| | | chapterThirteen |
| | | } |
| | | chapterThirteen, |
| | | }, |
| | | }; |
| | | </script> |
| | | |