| <template> | |
| 	<view class="yingbing-computed" :style="[computedStyle]"> | |
| 		<reader-header :text="chapter.title || ''" v-if="headerShowSync"></reader-header> | |
| 		<web-view ref="webview" style="flex:1" src="/uni_modules/yingbing-ReadPage/hybrid/html/computed.html" @onPostMessage="onPostMessage"></web-view> | |
| 		<reader-footer v-if="footerShowSync"></reader-footer> | |
| 	</view> | |
| </template> | |
| 
 | |
| <script> | |
| 	import ReaderHeader from '../../header/header.vue' | |
| 	import ReaderFooter from '../../footer/footer.vue' | |
| 	export default { | |
| 		inject: ['fontSize', 'fontFamily', 'lineHeight', 'topGap', 'bottomGap', 'slide', 'headerShow', 'footerShow', 'totalChapter'], | |
| 		components: { | |
| 			ReaderHeader, | |
| 			ReaderFooter | |
| 		}, | |
| 		computed: { | |
| 			computedStyle () { | |
| 				return { | |
| 					'padding-top': this.topGap + 'px', | |
| 					'padding-bottom': this.bottomGap + 'px', | |
| 					'padding-left': this.slide + 'px', | |
| 					'padding-right': this.slide + 'px' | |
| 				} | |
| 			} | |
| 		}, | |
| 		data () { | |
| 			return { | |
| 				chapter: {},//章节内容临时存储 | |
| 				success: null,//成功回调 | |
| 				fail: null,//失败回调, | |
| 				headerShowSync: false,//展示头部 | |
| 				footerShowSync: false//展示底部 | |
| 			} | |
| 		}, | |
| 		beforeDestroy() { | |
| 			this.$refs.webview && this.$refs.webview.evalJS("destroyHandleTimer()") | |
| 		}, | |
| 		methods: { | |
| 			start ({chapter, success, fail}) { | |
| 				this.chapter = chapter | |
| 				this.success = success | |
| 				this.fail = fail | |
| 				this.headerShowSync = typeof chapter.headerShow == 'boolean' ? chapter.headerShow : this.headerShow//判断是否显示头部 | |
| 				this.footerShowSync = typeof chapter.footerShow == 'boolean' ? chapter.footerShow : this.footerShow//判断是否显示底部 | |
| 				const style = {fontSize: this.fontSize, fontFamily: this.fontFamily, lineHeight: this.lineHeight, totalChapter: this.totalChapter} | |
| 				this.$nextTick(function () { | |
| 					setTimeout(() => { | |
| 						this.$refs.webview && this.$refs.webview.evalJS("start(" + encodeURIComponent(JSON.stringify(chapter)) + ', ' + encodeURIComponent(JSON.stringify(style)) + ")") | |
| 					}, 100) | |
| 				}) | |
| 			}, | |
| 			onPostMessage (e) { | |
| 				e.detail.data.forEach(item => { | |
| 					if ( item.handleSuccess ) { | |
| 						this.success && this.success(item.handleSuccess) | |
| 						this.success = null | |
| 						this.fail = null | |
| 						this.chapter = {} | |
| 					} | |
| 				}) | |
| 			} | |
| 		} | |
| 	} | |
| </script> | |
| 
 | |
| <style scoped> | |
| 	.yingbing-computed { | |
| 		position: absolute; | |
| 		top: 0; | |
| 		left: 0; | |
| 		right: 0; | |
| 		bottom: 0; | |
| 		transform: translateX(-1000px); | |
| 	} | |
| </style> |