mint-ui兼容性问题

819 阅读1分钟

不兼容安卓5.1.1。

  原因:发现打包后的代码中,仍然有let。

  解决方法:vue.config.js添加 transpileDependencies: ['mint-ui/src/utils']

loadmore组件上拉不触发。

  原因:checkBottomReached方法中,直接使用document.body.scrollTop获取滚动条高度。亲测Chromedocument.body.scrollTop为0,需使用document.documentElement.scrollTop可以获取正确的数据。

  解决办法:使用getScrollTop方法获取。getScrollTop该组件中已有,猜想是组件作者这里忘记调用了。 const scrollTop = this.getScrollTop(window)

getScrollTop(element) {
        if (element === window) {
          return Math.max(window.pageYOffset || 0, document.documentElement.scrollTop);
        } else {
          return element.scrollTop;
        }
      },

小米 max3手机上拉依然不刷新。

  原因:xiaomimax3获取到的scrollTop始终差0.1,例如2846.9091796875 (我也没找到官方说明,是自己实验出的结果)

  解决办法:scrollTop 向上取整。 return Math.ceil(scrollTop) + document.documentElement.clientHeight >= document.body.scrollHeight;

checkBottomReached函数最终为

checkBottomReached() {

    if (this.scrollEventTarget === window) {
      
      const scrollTop = this.getScrollTop(window)
      /* 兼容小米 max3手机底部上翻不刷新,原因是获取到的scrollTop差0.1,例如2846.9091796875 */
      return Math.ceil(scrollTop)  + document.documentElement.clientHeight >= document.body.scrollHeight;
    } else {
      return this.$el.getBoundingClientRect().bottom <= this.scrollEventTarget.getBoundingClientRect().bottom + 1;
    }
  }

  以上只是我的一点点项目实践中的采坑记录,抛转引玉而已。