在TypeScript中使用clipboardData

Cat*_*top 7 typescript

我正在尝试使用以下命令从TS1.6中的剪贴板访问数据:

$(container).bind("paste", (e) => {
    var data = e.originalEvent.clipboardData.getData('text');
});
Run Code Online (Sandbox Code Playgroud)

但它只是给我以下构建错误:

类型'JQueryEventObject'上不存在属性'clipboardData'

如果我删除第二行并在Chrome 46中调试它,我只需通过调用即可获得剪贴板数据

e.originalEvent.clipboardData.getData('text');
Run Code Online (Sandbox Code Playgroud)

我看不到clipboardData在jQuery.d.ts的最新版本的JQueryEventObject接口,但问题是 - 它应该是有还是有,从目前该TS支持剪贴板检索数据以不同的方式?

bar*_*rdt 7

您可以使用["property"]方法绕过预期的打字稿类型

 var pastedData = e.originalEvent["clipboardData"].getData('text');
Run Code Online (Sandbox Code Playgroud)


Eka*_*eva 7

使用 ClipboardEvent 类型(例如)

private onPaste(event: ClipboardEvent) {
    const {clipboardData} = event;
    const pastedText = clipboardData.getData('text');
}
Run Code Online (Sandbox Code Playgroud)


Cat*_*top 5

似乎直到TS1.8,我发现的一个(hacky)选项只是扩展Event为:

interface Event {
    clipboardData: any;
}
Run Code Online (Sandbox Code Playgroud)

我相信我可以通过更换any更好的东西来改善这一点,但它现在有效.

  • 对于其他人在某些项目中也停留在 1.8 之前的版本:它是 `clipboardData?: DataTransfer`。 (3认同)