zoukankan      html  css  js  c++  java
  • 路由跳转中的hash值和锚点冲突

    dealLink() {        //处理a标签情况,1、跳转到别的站点  2、当前页面锚点   3、不是站点又不是锚点,处理成文本形式
          let element = document.querySelectorAll('a')
          element.forEach((item, index) => {
            const href = item.getAttribute('href'),    //获取标签的href属性
              isInclude = href.includes('http'),      
              isHash = item.hash,
              noClick = !isInclude && !isHash         //特殊情况,不是站点又不是锚点的处理情况
            if (noClick) {
              item.style.color = 'rgba(0, 0, 0, 0.65)'
            }
            element[index].addEventListener('click', e => {
              this.stopDefault(e)
              if (noClick) {
                return false
              }
              if (isInclude) {
                window.open(href, '_blank')
              } else {
                this.anchorScroll(href)
              }
            })
          })
        },
        stopDefault(e) {
          if (e && e.preventDefault) {
            e.preventDefault()
          } else {
            window.event.returnValue = false
          }
        },
        anchorScroll(anchorName) {
          document.querySelector(anchorName).scrollIntoView(true)    //当hash值和锚点冲突之后,手动拿到锚点的位置进行滑动
        },
  • 相关阅读:
    第一次项目总结
    动画animation
    动画基本
    JQ属性和CSS
    JQ选择器
    关于JS的循环和函数,由入门到放弃
    Js知识点
    课程总结
    移动端开发--项目总总结
    项目总结
  • 原文地址:https://www.cnblogs.com/MJmajong/p/13235934.html
Copyright © 2011-2022 走看看