代码之家  ›  专栏  ›  技术社区  ›  Mengo

测试滚动条可见假阳性

  •  0
  • Mengo  · 技术社区  · 7 年前

    不是 可滚动,使用

    $el = document.documentElement
    const noscroll = $el.clientHeight === $el.scrollHeight // false
    
    console.log($el.clientHeight) // 977
    console.log($el.scrollHeight) // 991
    console.log($el.scrollTop) // 0
    

    但是窗口中没有可见的滚动条。不知道为什么不起作用。我也试过了 this ,但没有运气。

    this.getData().then(data => {
      this.$nextTick().then(() => {
        const $el = document.documentElement
        if (!this.isPageEnd && $el.clientHeight - $el.scrollTop === $el.scrollHeight) {
          this.getData()
        }
      })
     })
    
    1 回复  |  直到 7 年前
        1
  •  -1
  •   karthickj25    7 年前

    问题是下一行的状况

    const noscroll = $el.clientHeight === $el.scrollHeight <<--只有当客户端高度和滚动高度都相同时,此行才会返回true。

    您需要检查滚动高度是否小于或等于客户端高度

    有时 rubber duck debugging 可能会有帮助

    $el = document.documentElement
    const hasScroll = $el.scrollHeight <= $el.clientHeight
    
    console.log($el.clientHeight)
    console.log($el.scrollHeight)
    console.log(hasScroll)
    body {
      background: #20262E;
      padding: 20px;
      font-family: Helvetica;
    }
    
    #banner-message {
      background: #fff;
      border-radius: 4px;
      padding: 20px;
      font-size: 25px;
      text-align: center;
      transition: all 0.2s;
      margin: 0 auto;
      width: 300px;
      height: 1200px;
    }
    
    button {
      background: #0084ff;
      border: none;
      border-radius: 5px;
      padding: 8px 14px;
      font-size: 15px;
      color: #fff;
    }
    
    #banner-message.alt {
      background: #0084ff;
      color: #fff;
      margin-top: 40px;
      width: 200px;
    }
    
    #banner-message.alt button {
      background: #fff;
      color: #000;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="banner-message">
      <p>A large div</p>
    
    </div>