Microsoft Edge 浏览器如何读取剪贴板数据

Microsoft Edge browser how to read Clipboard data

我无法在 Microsoft Edge 浏览器中读取剪贴板数据。我正在使用下面的 javascript.

if (window.clipboardData && window.clipboardData.getData) { // IE
       pastedText = window.clipboardData.getData('Text');
 } else if (e.clipboardData && e.clipboardData.getData) {   //non-IE
       pastedText = e.clipboardData.getData('text/plain');
 }

if/elseif 块中没有一个在 Edge 中执行。我尝试使用

e.originalEvent.clipboardData.getData('text/plain');

但我收到 'Access is denied.' 错误。

如果有人知道如何解决此问题,请告诉我。

我没有edge,但是你似乎没有权限访问剪贴板数据。这是在网站上还是在本地执行的 JavaScript 脚本中调用它?

确保该网站在受信任的站点中。

参见 https://w3c.github.io/clipboard-apis/#clipboard-event-interfaces,或更准确地说:

12.1 隐私问题

不受信任的脚本不应不受控制地访问用户的剪贴板数据。本规范假设当用户从用户代理的可信 chrome 明确启动粘贴操作时授予对当前剪贴板数据的访问权限是可以接受的。但是,实施者必须谨慎行事,并且至少要实施以下预防措施:

实现到 return 剪贴板数据的 DataTransfer 接口的对象不得在 ClipboardEvent 事件处理程序之外可用。 如果脚本存储对实现 DataTransfer 接口的对象的引用以从 ClipboardEvent 事件处理程序外部使用,则在预期上下文之外调用时,所有方法都必须是空操作。 实现不得让脚本创建合成剪贴板事件来访问真实剪贴板数据,除非配置为这样做。 实现不应让脚本调用 document.execCommand('paste') 除非用户明确允许它。

实现可以选择进一步限制 DataTransfer 接口提供的功能。例如,一个实现可能允许用户禁用此 API,或配置应授予哪些网站访问权限。

Edge does not currently support the clipboard api,但正在考虑中,可能会在不久的将来添加。