作者:蔡蔡蔡蔡贝特 | 来源:互联网 | 2022-12-10 12:55
我有一个事件监听器,它监听ctrl - v
粘贴事件。在侦听器内部,我使用clipboardData.getData
方法从剪贴板获取复制的数据。但是现在我需要实现一个按钮,当用户单击该按钮时,它会执行复制逻辑。我的问题是如何以编程方式触发粘贴事件。我需要获取的主要内容是clipboardData
实例。
下面的代码是我当前的paste
事件监听器。我需要模拟e
粘贴事件以使按钮正常工作。
myDom.on('paste',function(e) {
e.preventDefault();
var data = (e.originalEvent || e).clipboardData.getData('application/image');
});
T.J. Crowder..
5
我的问题是如何以编程方式触发粘贴事件。
没有浏览器的特殊设置,您就无法启用它(我不知道有这种设置,并且无法在Firefox或Chrome的设置中立即找到它),并且用户启用了该设置。如果可以,那将是一个重大的安全问题,因为您的网页可能会窥探用户剪贴板的内容。这就是为什么您只能从剪贴板事件的事件对象获取剪贴板数据的原因。
从规格:
11.1。隐私权和剪贴板事件API
剪贴板事件API允许在剪贴板事件处理程序的上下文中运行的脚本访问系统剪贴板的副本,并可能修改正在写入剪贴板的数据。
用户代理应注意以下有关保护剪贴板事件API访问的数据的要求:
实现该DataTransfer
接口以返回剪贴板数据的对象必须在提供该数据的ClipboardEvent事件处理程序之外不可用。
如果脚本存储对实现DataTransfer
接口的对象的引用,以从ClipboardEvent事件处理程序外部使用,则在预期上下文之外调用时,所有方法都必须为no-ops。
实施不得让脚本创建合成剪贴板事件来访问实际剪贴板数据(除非用户已对其进行配置)。
即使剪贴板事件API不受剪贴板权限的限制,用户代理也可以选择为用户提供一种方法来禁用此API或配置允许哪些站点访问它。
(我强调第三个要点)
请注意,规范确实说“除非用户配置了它,否则”,但是同样,我不知道允许用户执行此操作的浏览器。(只是网站是否完全可以看到剪贴板事件。)
1> T.J. Crowder..:
我的问题是如何以编程方式触发粘贴事件。
没有浏览器的特殊设置,您就无法启用它(我不知道有这种设置,并且无法在Firefox或Chrome的设置中立即找到它),并且用户启用了该设置。如果可以,那将是一个重大的安全问题,因为您的网页可能会窥探用户剪贴板的内容。这就是为什么您只能从剪贴板事件的事件对象获取剪贴板数据的原因。
从规格:
11.1。隐私权和剪贴板事件API
剪贴板事件API允许在剪贴板事件处理程序的上下文中运行的脚本访问系统剪贴板的副本,并可能修改正在写入剪贴板的数据。
用户代理应注意以下有关保护剪贴板事件API访问的数据的要求:
实现该DataTransfer
接口以返回剪贴板数据的对象必须在提供该数据的ClipboardEvent事件处理程序之外不可用。
如果脚本存储对实现DataTransfer
接口的对象的引用,以从ClipboardEvent事件处理程序外部使用,则在预期上下文之外调用时,所有方法都必须为no-ops。
实施不得让脚本创建合成剪贴板事件来访问实际剪贴板数据(除非用户已对其进行配置)。
即使剪贴板事件API不受剪贴板权限的限制,用户代理也可以选择为用户提供一种方法来禁用此API或配置允许哪些站点访问它。
(我强调第三个要点)
请注意,规范确实说“除非用户配置了它,否则”,但是同样,我不知道允许用户执行此操作的浏览器。(只是网站是否完全可以看到剪贴板事件。)