获取当前剪贴板内容?

Gab*_*lli 82 javascript clipboard paste

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

Dav*_*ave 66

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

  • 这可以在除Internet Explorer之外的任何浏览器中使用吗? (13认同)
  • 您可以在http://caniuse.com/#search=clipboardData查看兼容性 (6认同)
  • 可能不是.看到这个问题:http://stackoverflow.com/questions/400212/how-to-copy-to-the-clipboard-in-javascript (4认同)
  • 更好的解决方案是通过节点对象获取,但不要通过窗口对象获取。请参阅[此处](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/getData) (2认同)

iul*_*net 40

根据您何时阅读此内容,可以通过以下方式使用新的剪贴板APInavigator.clipboard.它可以像这样使用:

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

或者使用异步语法:

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

请记住,这将提示用户具有权限请求对话框,因此不幸的是没有有趣的业务.

更多内容

规格

  • 请注意,从控制台调用时总是会导致错误.但它_does_工作在直接用户操作上,就像你按下页面上的按钮一样. (10认同)
  • 这在 Firefox 中根本行不通。 (7认同)

Ric*_*iao 16

您可以使用

window.clipboardData.getData('Text')
Run Code Online (Sandbox Code Playgroud)

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

  • ZeroClipboard只允许您将*复制到*剪贴板,而不是从*它读取*. (4认同)
  • 链接工作正常(再次) (2认同)

小智 7

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

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

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();
});
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到本网站!我很高兴您通过回答问题做出贡献。但请注意,您的回答并没有真正回答OP的问题。问题是从剪贴板“检索”内容并在打开页面时将其粘贴到某处。另外,由于问题没有 [tag:jquery] 标签,因此使用 jQuery 的答案应包含使用库 (jQuery) 的注释。 (34认同)