| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | 
							- export default class BadIntersectionObserver {
 
-     constructor(options) {
 
-         this.$options = {
 
-             context: null,
 
-             selector: null,
 
-             onEach: res => res.dataset,
 
-             onFinal: () => null,
 
-             relativeTo: null,
 
-             threshold: 0.5,
 
-             delay: 200,
 
-             observeAll: false,
 
-             initialRatio: 0,
 
-             ...options,
 
-         }
 
-         this.$observer = null
 
-     }
 
-     connect() {
 
-         if (this.$observer) return this
 
-         this.$observer = this._createObserver()
 
-         return this
 
-     }
 
-     reconnect() {
 
-         this.disconnect()
 
-         this.connect()
 
-     }
 
-     disconnect() {
 
-         if (!this.$observer) return
 
-         const ob = this.$observer
 
-         if (ob.$timer) clearTimeout(ob.$timer)
 
-         ob.disconnect()
 
-         this.$observer = null
 
-     }
 
-     _createObserver() {
 
-         const opt = this.$options
 
-         const observerOptions = {
 
-             thresholds: [opt.threshold],
 
-             observeAll: opt.observeAll,
 
-             initialRatio: opt.initialRatio,
 
-         }
 
-         // 创建监听器
 
-         const ob = uni.createIntersectionObserver(opt.context, observerOptions)
 
-         // 相交区域设置
 
-         if (opt.relativeTo) ob.relativeTo(opt.relativeTo)
 
-         else ob.relativeToViewport()
 
-         // 开始监听
 
-         // let finalData = []
 
-         // let isCollecting = false
 
-         ob.observe(opt.selector, res => {
 
-             const {
 
-                 intersectionRatio
 
-             } = res
 
-             const visible = intersectionRatio >= opt.threshold
 
-             if (!visible) return
 
-             const data = opt.onEach(res)
 
-             // finalData.push(data)
 
-             // if (isCollecting) return
 
-             // isCollecting = true
 
-             // setTimeout(() => {
 
-             //     opt.onFinal.call(null, finalData)
 
-             //     finalData = []
 
-             //     isCollecting = false
 
-             // }, opt.delay)
 
-         })
 
-         return ob
 
-     }
 
- }
 
 
  |