美文网首页
document.body.scrollTop的值始终为0

document.body.scrollTop的值始终为0

作者: 弹指一挥间_e5a3 | 来源:发表于2019-05-17 11:29 被阅读0次

生命不休,bug不止。

今天在写有赞商城的时候又遇到了一个bug。

我需要的效果是这样的:

在页面滑动一段距离的时候,底部的一个小icon会显现出来,点击可以回到顶部。


image.png

代码实现逻辑是:

在vue父容器container绑定touchmove事件,因为是移动端,需要触摸滑动才触发事件。<div class="container with-top-search" @touchmove="move" id="app">

在move方法中做判断,如果滑动的距离大于100,就让show变为true,这个show是用v-show绑定在icon上面的。<div class="go-to-top" v-show="show" @click="toTop" ></div>

    move() {
      if(document.body.scrollTop > 100) {
        this.show = true
      }else {
        this.show = false
      }
    }

结果就出现bug了。console.log(document.body.scrollTop)的值一直为0.
google了一下,原因如下:

  • 页面指定了DTD,即指定了DOCTYPE时,使用document.documentElement。
  • 页面没有DTD,即没指定DOCTYPE时,使用document.body。

而我指定了doctype所以应该改为

      move() {
        if(document.documentElement.scrollTop > 100) {
          this.show = true
        }else {
          this.show = false
        }
      }

解决!

相关文章

网友评论

      本文标题:document.body.scrollTop的值始终为0

      本文链接:https://www.haomeiwen.com/subject/yaynaqtx.html