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

4

我无法在 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');

但我遇到了“拒绝访问”的错误。

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

2个回答

3

1
你能提供一个链接或其他东西,让我了解这将在不久的将来被添加吗?比如 Edge 的开发路线图之类的。 - Sнаđошƒаӽ
1
太棒了。您最初的回答是在2015年,4年后Edge仍不支持剪贴板API。现在你们要基于Chromium构建Edge,这很好。顺便说一下,我认为您应该在回答中加上作为PS或其他职务在Edge工作的信息。 - Sнаđошƒаӽ

1

我没有edge浏览器,但似乎您未被授权访问剪贴板数据。这是在网站上还是从本地执行的JavaScript脚本中调用的?

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

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

12.1 隐私问题

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

实现 DataTransfer 接口以返回剪贴板数据的对象必须不可在 ClipboardEvent 事件处理程序之外使用。 如果脚本存储对实现 DataTransfer 接口的对象的引用以便在 ClipboardEvent 事件处理程序之外使用,则在期望的上下文之外调用所有方法必须是 no-op。 实现必须禁止脚本创建合成的剪贴板事件来获取访问真实剪贴板数据的权限,除非配置为允许这样做。 实现不应让脚本调用 document.execCommand('paste'),除非用户已明确允许。

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

我正在我的网站上使用这个JavaScript,并且目前正在本地测试它。 - Ramesh Chandra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接