美文网首页
文档拉到最底部才能操作按钮

文档拉到最底部才能操作按钮

作者: 钱英俊真英俊 | 来源:发表于2019-09-26 15:48 被阅读0次

Vue的项目, 弹窗的文档是用iframe引入html显示的,但新增了文档必须拉到最底部才能操作按钮,iframe无法监听到scroll事件

需求

实现如下:

<template lang="pug">
  .main-wrap
    el-dialog(
      v-if="isShow" // 每次展示都重新渲染以便滚动条复原
      title="Document"
      width="700px" // 固定宽度以便确认scrollTop
      :visible.sync="isShow")
      p.content#content(v-html="text" @scroll="scroll") // 文档展示
      .footer(slot="footer" v-if="isCheck")
        el-button(@click="isShow = false") {{$t('common.cancel')}}
        el-button(
          :disabled="disabled"
          type="primary"
          @click="confirm") {{$t('common.loan')}}
  
</template>

<script>
export default {
  data () {
    return {
      isShow: false, //是否显示弹窗
      text: '', // 文档内容
      disabled: true // 按钮是否可以操作
    }
  },

  methods: {
// 每次显示弹窗的时候按钮不能操作复位
    toShow (row) {
      this.disabled = true
    },
// 获取文档内容并解析
    async getHtml () {
    // 判断环境
      const location = window.location
      let url = ''
      let hostname = location.hostname
      if (hostname === 'localhost') {
        url = `${location.origin}/static/doct.html`
      } else {
        url = `${location.origin}/dist/static/dot.html`
      }
      let headers = new Headers()
      // 设置fetch请求头
      headers.append('Content-Type', 'text/plain')
      fetch(url, {
        headers
      }).then((res) => {
        return res.text()
      }).then(res => {
        this.text = res
      })
    },
// 判断文档滚动位置
    scroll (v) {
      if (!this.disabled) return false // 如果到底部就再设置了
      let top = v.target.scrollTop
      this.disabled = (v.target.scrollHeight - top !== v.target.clientHeight) // 到底部到话就可操作
    }
  },
  async  mounted () {
    await this.getHtml()
  }

}
</script>
<style scoped>
// 文档内容样式
.content {
  border: 3px solid #ccc;
  padding: 15px;
  height: 400px;
  overflow-y: scroll;
}

</style>
原理:
  1. 通过fetch获取远程html并解析为text;
  2. 通过v-html把解析过后的字符串渲染到模板中;
    3.监听文档的scroll事件并判断文档的scrollTop是否已经到底部,同步到按钮的disabled
  • element.scrollTop可以获取或设置一个元素的内容垂直滚动像素数, scrollHeight
  • Element.scrollHeight 这个只读属性是一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容。
判断元素是否到底部

element.scrollHeight - element.scrollTop === element.clientHeight

相关文章

  • 文档拉到最底部才能操作按钮

    Vue的项目, 弹窗的文档是用iframe引入html显示的,但新增了文档必须拉到最底部才能操作按钮,iframe...

  • 删除GitHub仓库

    打开仓库页面,点击settings: 拉到settings页面最底部:

  • ios  按钮的touchDown事件延迟

    当按钮的位置位于控制器的最底部时,touchDown事件会有所延迟,例如控制器最底部有一个语音按钮,长按语音按钮说...

  • 信泰百万无忧-有态度有温度的重疾险(附2018重疾险精品对比)

    2018****年重疾****险****精品****预****告(需要看对比表的朋友直接拉到最底部) · ...

  • Ps—了解状态栏(7)

    状态栏位于文档窗口底部,它可以显示文档窗口的缩放比例、文档大小、当前使用的工具等信息。单击状态栏中的按钮 可在打开...

  • 小程序全面屏底部按钮适配

    如果你的小程序页面按钮有用fixed定位到底部的话,那你一定会遇到兼容全面屏的坑(与底部横条重叠)。查了下文档,发...

  • vue+node实现拖拽上传图片

    首先介绍几个要用到的知识点,源码地址在最底部,不想看文字的同学可以直接拉到最底部下载。 一、知识点 实现拖拽上传需...

  • 无限滚动轮播(不操作Dom)

    该插件由轮播图片、向前向后按钮及底部分页器3部分组成 逻辑上不操作dom,在原有图片列表的首尾分别clone列表最...

  • 怎样邀请嘉宾加入圈子

    小密圈具备邀请嘉宾功能,可以邀请大咖到你的圈子坐堂。 进入你的圈子,选择右上方的设置(按钮「三」),拉到底部选择「...

  • iOS 11 适配记录

    1、表视图、集合视图这些,应该延伸至屏幕底部,不受安全区域的限制。 2、屏幕底部有操作按钮的界面,应该考虑安全区域...

网友评论

      本文标题:文档拉到最底部才能操作按钮

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