我的组件中有以下元素:
<div className="document" contentEditable="true" placeholder="Write something...." ref={this.document} onBlur={this.onBlur} onInput={this.onInput} dangerouslySetInnerHTML={{__html: document.content}}></div>
以下是
onInput
函数:onInput(event) {
event = event.nativeEvent;
console.log(event.dataTransfer); // This is null
}
我想使用
dataTransfer
来确定是否粘贴/删除了某些内容,而无需监听每个人的特定事件,以便从 InputEvent
管理所有内容(因为 InputEvent
会触发我想听的大多数操作)甚至 MDN 上的示例也不起作用,因为
dataTransfer
是 null
:https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/dataTransfer
为什么会这样?这是一些尚未实现的标准吗?
最佳答案
MDN 示例适用于 Firefox,但不适用于 Chrome。另一方面,在同一个 MDN 示例中,在 Chrome 中听 beforeinput
而不是 input
有效,但在 Firefox 中无效。所以使用这两个事件的组合应该可以在两个浏览器中工作。
据我所知,specification 表示应该在两种情况下都设置该属性。
关于javascript - InputEvent.dataTransfer 始终为 null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59751598/