zoukankan      html  css  js  c++  java
  • js监听键盘+鼠标组合操作

      近期做一款甘特图的组件,想要实现 Ctrl + 滚轮  放大缩小甘特图时间最小刻度的功能,刚开始以为会有组合监听的办法,后来发现行不通,键盘和鼠标监听的方式不同。下面大致说一下实现方式。

    1、按键监听:js无法做到同时监听,所以我们将监听按键的按下 、弹起状态,并保存。onkeydown  按下,将变量 ctrlDown  设置为 true,onkeyup  时设置为false,这里我监听的是Ctrl, 同理,如果想监听多按键,比如  Ctrl + Shift , 就设置2个变量,皆为true代表按下了。

    2、鼠标监听: 我这里监听的是滚轮,当然左右击、双击、移入移出都是一样的做法,只需要对指定dom做事件监听即可,注意页面注销时,removeEventListener 解绑事件。在鼠标事件监听里面,判断键盘监听变量的值,true 代表正在按压状态。注意阻止浏览器的默认事件。

    这样就实现了组合操作的监听,希望对你有帮助。ps:测试数据有些烂,见谅

    <template>
      <div class="c-gant"> </div>
    </template>
    
    <script>
    
      export default {
        data() { return {}; },
        methods: {
          // 监听 Ctrl + 滚轮,缩放甘特图
          lisenScrol() {
            let w = this
            document.onkeydown = function(e) {
              console.log(e)
              if (e.keyCode === 17) w.ctrlDown = true
            },
            document.onkeyup = function(e) {
              if (e.keyCode === 17) w.ctrlDown = false
            },
            document.getElementsByClassName('c-gant')[0].addEventListener('mousewheel',(e) => {
              e.preventDefault();
              if(w.ctrlDown) {
                let _newTimes = []
                if(e.wheelDeltaY > 0) {  // 放大
                } else {  // 缩小
                }
              }
            },false); 
          },
        },
      }
    </script>

  • 相关阅读:
    内核配置中Default kernel command string和uboot中bootargs变量的区别
    内核编译配置选项含义
    WARNING: Unable to open an initial console
    Linux内核学习之四库全书
    EABI和OABI
    0.8.11版本ffmpeg一天移植将近完成。
    mmsplayer for wince,windows demo已经发布
    mmsplayer for wince,windows demo已经发布
    0.8.11版本ffmpeg一天移植将近完成。
    ffmpeg AT&T汇编转intel汇编 之(read_time)
  • 原文地址:https://www.cnblogs.com/pengfei-nie/p/13297439.html
Copyright © 2011-2022 走看看