javascript - 为什么 onKeyDown 和 onKeyUp 在附加到 contenteditable div 中的跨度时不触发?

标签 javascript reactjs contenteditable keyboard-events onkeydown

这是演示问题的代码片段:

import React from 'react'
import ReactDOM from 'react-dom'

class App extends React.Component {
  render() {
    return (
     <div contentEditable="true">
       <p>
         <span onKeyDown={(e)=>{
           alert("hello world!!")
          }}>Hello world</span>
       </p>
     </div>
    )
  }
}

ReactDOM.render(
  <App />,
  document.getElementById('container')
);

关注 div 并按下一些按钮后,不会触发警报。为什么?

https://codesandbox.io/embed/react-playground-forked-fymxg3?fontsize=14&hidenavigation=1&theme=dark

最佳答案

contenteditable的内容元素被视为用户输入,而不是 DOM 的一部分。与 <input> 中的文本相同元素。

因此,您不能像与普通 DOM 一样与该元素的值进行交互 - 这意味着这里没有适合您的事件处理程序。

关于javascript - 为什么 onKeyDown 和 onKeyUp 在附加到 contenteditable div 中的跨度时不触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72549971/

相关文章:

javascript - 在 contenteditable 元素上制作 div 按钮

javascript - 在 Angular 单元测试中使用 Modernizr

JavaScript 类型。试图了解它的幕后工作原理

javascript - 在 Dart 中处理不受支持的浏览器的最佳方法是什么?

javascript - 将 div(带有边框和填充)悬停在 Canvas 元素的中心?

javascript - 使用 window.getSelection 获取选择/突出显示中的所有元素

javascript - react : Pass function property down to pure child component - Rerendering

reactjs - window.location.replace() 的 React 版本?

reactjs - 如何在ubuntu上为 digital ocean 设置防火墙?

javascript - 在 contenteditable 插入符位置占 `<br>` s