使用FireFox,Safari和Chrome将文本复制/放在剪贴板上

2022-08-30 05:26:58

在 Internet Explorer 中,我可以使用剪贴板数据对象来访问剪贴板。如何在 FireFox、Safari 和/或 Chrome 中执行此操作?


答案 1

出于安全原因,Firefox 不允许您在剪贴板上放置文本。但是,有一种使用 Flash 的解决方法。

function copyIntoClipboard(text) {

    var flashId = 'flashId-HKxmj5';

    /* Replace this with your clipboard.swf location */
    var clipboardSWF = 'http://appengine.bravo9.com/copy-into-clipboard/clipboard.swf';

    if(!document.getElementById(flashId)) {
        var div = document.createElement('div');
        div.id = flashId;
        document.body.appendChild(div);
    }
    document.getElementById(flashId).innerHTML = '';
    var content = '<embed src="' +
        clipboardSWF +
        '" FlashVars="clipboard=' + encodeURIComponent(text) +
        '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashId).innerHTML = content;
}

唯一的缺点是这需要启用闪存。

源代码目前已死:http://bravo9.com/journal/copying-text-into-the-clipboard-with-javascript-in-firefox-safari-ie-opera-292559a2-cc6c-4ebf-9724-d23e8bc5ad8a/(其Google缓存也是如此))


答案 2

现在有一种方法可以在大多数现代浏览器中轻松执行此操作,使用

document.execCommand('copy');

这将复制当前选定的文本。您可以使用以下方式选择文本区域或输入字段

document.getElementById('myText').select();

若要以不可见方式复制文本,可以快速生成文本区域,修改框中的文本,选择它,复制它,然后删除 textArea。在大多数情况下,此文本区域甚至不会闪烁到屏幕上。

出于安全原因,浏览器仅允许您在用户采取某种操作(即单击按钮)时进行复制。执行此操作的一种方法是将 onClick 事件添加到 html 按钮,该按钮调用复制文本的方法。

一个完整的例子:

function copier(){
  document.getElementById('myText').select();
  document.execCommand('copy');
}
<button onclick="copier()">Copy</button>
<textarea id="myText">Copy me PLEASE!!!</textarea>