情况说明:

  • onKeydown事件触发条件:容器中某个元素获取焦点时,按键。因此无效的原因是当前容器内并没有元素获取焦点。

方案一:容器中监听快捷键

  • 解决方案:利用全局监听
  • window.onKeydown
    document.onkeydown

        

方案二:窗口中多个容器,监听各自的快捷键

  • 与“方案一”不同的是,需要真正在某个自定义容器中监听,并且不污染全局
  • 解决方案: 利用 contenteditable 属性,让容器可编辑
  • <!--监听容器-->
    <div id="keyDown" contenteditable="true">
        <!--容器中内容包裹,用于隔离父容器的contenteditable属性对子元素造成影响-->
        <div id="continer" contenteditable="false"></div>
    </div>
    
    const keyDown = document.querySelector('#keyDown');
    keyDown.onkeydown = (e) => {
        const ev = window.event || e
        // do......
    }

    <!-- 修改边框颜色 -->
    [contenteditable]{
      outline: 1px solid transparent; 
      border: 1px solid #fff;width: 100%;
    }
    [contenteditable]:focus{
      border: 1px solid #00c0ef; 
      border-radius: 3px;
    }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。