粘贴前更新剪贴板数据(不是“粘贴”事件)

Posted

技术标签:

【中文标题】粘贴前更新剪贴板数据(不是“粘贴”事件)【英文标题】:Update the clipboard data before paste (not the 'paste' event) 【发布时间】:2018-03-14 07:22:33 【问题描述】:

我有一个要求,将复制到剪贴板上的文本在粘贴之前必须转换为其他文本。例如,在单击按钮时,我以编程方式进行剪贴板复制,并且将“更改前”之类的一些文本复制到剪贴板上。我绑定到我的编辑器的粘贴事件无法更改剪贴板数据,并且它始终是剪贴板上存在的数据(“更改前”)被复制。

$("#Editor1").on("paste", createIncludedScriptPath);
function createIncludedScriptPath(e) 
    var pastedData = e.originalEvent.clipboardData.getData('text');
    var path = createPath(pastedData);
    textToCopy = "." + " " + "'" + path + "'";
    copyTextToClipboard(textToCopy);

在这里,在上面的代码中,我试图获取现有的剪贴板数据,对其进行更改并将更改后的数据复制到剪贴板上。但是,总是粘贴旧数据,即(在 pastedData 变量中)。

我了解到,在剪贴板粘贴 API 中,您无法重置剪贴板。

如何更新剪贴板数据,以便最终粘贴更新的数据?

【问题讨论】:

最好的选择是在复制到剪贴板之前修改数据。 我不能,因为我正在根据要粘贴的位置获取一些信息 好的。所以您可以在上面的 evnt 处理函数中进行更改并手动放置可编辑框的.value。别忘了把preventDefault() 成功了!谢谢纳曼 【参考方案1】:

您可以直接设置编辑器内容并调用 e.preventDefault();

我认为更新剪贴板数据不起作用。

【讨论】:

以上是关于粘贴前更新剪贴板数据(不是“粘贴”事件)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 在粘贴事件中获取剪贴板数据(跨浏览器)

JavaScript在粘贴事件上获取剪贴板数据(跨浏览器)

JS处理剪贴板

ExtJs:当文本字段获得焦点时,在文本字段中手动触发粘贴事件

三星手机怎么粘贴不了怎么回事

在 react-native 文本输入中检测粘贴事件