获取当前剪贴板内容?[关闭]


106

我想知道一种方法,可让我的脚本检测剪贴板的内容,并在打开页面时将其粘贴到文本字段中,而无需用户输入。如何做呢?


您不能真正知道用户剪贴板中的内容,除非用户在复制文本时使用了某种Flash后端。------- 更新: 此处正确的答案
Naftali aka Neal



Answers:


74

window.clipboardData.getData('Text')将在某些浏览器中运行。但是,许多运行它的浏览器都会提示用户是否希望网页访问剪贴板。


17
可以在Internet Explorer以外的其他浏览器中使用吗?
安德森·格林

6
可能不是。看到这个问题:stackoverflow.com/questions/400212/…–
Dave

7
您可以在此处检查兼容性caniuse.com/#search=clipboardData
Sergey Novikov

1
更好的解决方案是通过节点对象获得,而不是通过窗口对象获得。看到这里
rplaurindo '16

66

使用新的API剪贴板通过navigator.clipboard。可以这样使用:

navigator.clipboard.readText()
  .then(text => {
    console.log('Pasted content: ', text);
  })
  .catch(err => {
    console.error('Failed to read clipboard contents: ', err);
  });

或使用异步语法:

const text = await navigator.clipboard.readText();

请记住,这将提示用户一个权限请求对话框,因此不可能进行任何有趣的事情。

(注意:如果从控制台调用,则无法使用,但是需要直接的用户操作,例如按下按钮,谢谢@Artur)

关于更多

规格


18
请注意,从控制台调用它总是会导致错误。但这确实适用于直接的用户操作,例如当您按下页面上的按钮时。
Klesun

这似乎只返回纯文本...即使剪贴板上有富文本。我怎么能得到呢?\
迈克尔(Michael)

@Michael,仅在上一个Chrome版本(76)中添加了对图像等的支持
iuliu.net

您可以在控制台中进行测试,方法是将换成setTimeout,然后单击该页面。
edbentley

18

您可以使用

window.clipboardData.getData('Text')

在IE中获取用户剪贴板的内容。但是,在其他浏览器中,由于没有访问剪贴板的标准界面,您可能需要使用Flash来获取内容。也许你可以试试这个插件零剪贴板


1
链接正常运行(再次)
stephanos

5
ZeroClipboard仅允许您复制剪贴板,而不能从剪贴板中读取。
DSimon 2015年

4

以下将为您提供选定的内容以及更新剪贴板。

将元素ID与复制事件绑定,然后获取所选文本。您可以替换或修改文本。获取剪贴板并设置新文本。要获得准确的格式,您需要将类型设置为“ text / hmtl”。您也可以将其绑定到文档而不是元素。

      $(ElementId).bind('copy', function(event) {
        var selectedText = window.getSelection().toString(); 
        selectedText = selectedText.replace(/\u200B/g, "");

        clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
        clipboardData.setData('text/html', selectedText);

        event.preventDefault();
      });

20
欢迎光临本站!我很高兴您通过回答问题做出了贡献。但是请注意,您的回答并不能真正回答OP的问题。问题是从剪贴板中检索内容,然后在打开页面时将其粘贴到某处。另外,由于问题没有jquery标签,因此jQuery的答案应包含使用库(jQuery)的注释。
卡雷尔格(KarelG)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.