说明

要求

  1. 假定现在有路由/news,/login
  2. 监听键盘事件,只允许在/news页面内有效
  3. 不管后面跳到哪个页面,都不会触发对应的键盘事件,只能在/news里才触发

问题

  1. 没有进入/news之前,按键盘上的键,不会触发事件,
  2. 进过/news后,不管有没有按键盘上的键,再跳到别的页面,按键盘上的键,都会触发事件

代码

srcviewsnews.vue
<template>
  <div>
    news
  </div>
</template>

<script>
export default {
  data() {
    return {
      flag: true, //底部图片列表显示隐藏
      name: "aa"
    };
  },
  methods: {
    keyLeft() {
      alert(this.name);
    },
    keyUp() {
      alert("向上方向键");
    },
    keyRight() {
      alert("向右方向键");
    },
    keyDown() {
      alert("向下方向键");
    },
    keys() {
      var that = this;
      document.onkeydown = function(e) {
        let key = window.event.keyCode;
        if (key == 37) {
          that.keyLeft();
        } else if (key == 38) {
          that.keyUp();
          return false; //有上下滚动条的时候,不向上滚动
        } else if (key == 39) {
          that.keyRight();
        } else if (key == 40) {
          that.keyDown();
          return false; //有上下滚动条的时候,不向上滚动
        }
      };
    }
  },
  created() {
    if (this.flag == true && this.$route.path == "/news") {
      this.keys();
    }
  },
  mounted() {}
};
</script>

渣渣辉
1.3k 声望147 粉丝