diff --git a/packages/taro-h5/src/api/wxml/IntersectionObserver.ts b/packages/taro-h5/src/api/wxml/IntersectionObserver.ts index f6569bbc04f4..f05487eff08d 100644 --- a/packages/taro-h5/src/api/wxml/IntersectionObserver.ts +++ b/packages/taro-h5/src/api/wxml/IntersectionObserver.ts @@ -61,10 +61,14 @@ export class TaroH5IntersectionObserver implements Taro.IntersectionObserver { // 使用时间戳而不是entry.time,跟微信小程序一致 time: Date.now(), } + // web端会默认首次触发 - if (!this._isInited && this._options.initialRatio <= Math.min.apply(Math, this._options.thresholds)) { + if (!this._isInited) { // 初始的相交比例,如果调用时检测到的相交比例与这个值不相等且达到阈值,则会触发一次监听器的回调函数。 - return + const [min, max] = [Math.min(this._options.initialRatio, entry.intersectionRatio), Math.max(this._options.initialRatio, entry.intersectionRatio)]; + if(this._options.initialRatio === entry.intersectionRatio || !this._options.thresholds.some(value => value >= min && value <= max)) { + return + } } _callback && _callback.call(this, result) })