获取当前剪贴板内容?

IT技术 javascript clipboard paste
2021-01-30 03:45:38

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

4个回答

使用新的剪贴板 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();

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

如果从控制台调用,上面的代码将不起作用。它仅在您在活动选项卡中运行代码时才有效。要从控制台运行代码,您可以设置超时并快速单击网站窗口:

setTimeout(async () => {
  const text = await navigator.clipboard.readText();
  console.log(text);
}, 2000);

Google 开发人员文档 中阅读有关 API 和用法的更多信息

规格

请注意,从控制台调用时它总是会导致错误。但它确实适用于直接的用户操作,例如当您按下页面上的按钮时。
2021-04-01 03:45:38
这似乎只返回纯文本......即使剪贴板上有富文本。我怎么能得到它?\
2021-04-01 03:45:38
这在 Firefox 中根本不起作用。
2021-04-04 03:45:38
您可以在控制台中进行测试,方法是将 包裹在 中setTimeout,然后单击返回页面。
2021-04-06 03:45:38
@Michael,在上一个 Chrome 版本 (76) 中刚刚添加了对图像和其他内容的支持
2021-04-07 03:45:38

window.clipboardData.getData('Text')将在某些浏览器中工作。然而,它工作的许多浏览器会提示用户他们是否希望网页能够访问剪贴板。

可能不是。看到这个问题:stackoverflow.com/questions/400212/...
2021-03-12 03:45:38
我担心 Keepass 及其安全性。该应用程序可让我将密码复制到剪贴板。
2021-03-12 03:45:38
这可以在 Internet Explorer 以外的任何浏览器中使用吗?
2021-03-21 03:45:38
更好的解决方案是通过节点对象获取,而不是通过窗口对象获取。这里
2021-03-31 03:45:38
您可以在这里检查兼容性caniuse.com/#search=clipboardData
2021-04-06 03:45:38

您可以使用

window.clipboardData.getData('Text')

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

链接工作正常(再次)
2021-03-14 03:45:38
ZeroClipboard 只允许您复制剪贴板,而不能从中读取
2021-04-03 03:45:38

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

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

document.querySelector('element').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();
});
欢迎来到本站!我很高兴你通过回答一个问题来做出贡献。但请注意,您的回答并没有真正回答 OP 的问题。问题是在打开页面时从剪贴板中检索内容并将其粘贴到某处。此外,由于该问题没有jquery标记,因此使用 jQuery 的答案应包含使用库 (jQuery) 的注释。
2021-03-20 03:45:38
这是从网页中选择一个数据并将其设置到剪贴板,问题是提取剪贴板数据(它可以来自任何来源)所以我们应该能够从剪贴板中获取数据,无论它是从哪里复制的.
2021-03-26 03:45:38