我的组件中有以下元素:

<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 上的示例也不起作用,因为 dataTransfernull :
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/

10-10 15:25