获取当前剪贴板内容?

时间:2011-06-20 14:45:44

标签: javascript clipboard paste

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

4 个答案:

答案 0 :(得分:63)

window.clipboardData.getData('Text')可以在某些浏览器中使用。但是,许多能够正常工作的浏览器会提示用户是否希望网页能够访问剪贴板。

答案 1 :(得分:32)

根据您的阅读时间,new clipboard 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)

More on that

Spec

答案 2 :(得分:15)

您可以使用

window.clipboardData.getData('Text')

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

答案 3 :(得分:5)

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

使用复制事件绑定元素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();
      });