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

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


现在有一种方法可以在大多数现代浏览器中轻松使用

document.execCommand('copy');

这将复制当前选定的文本。 您可以使用选择textArea或输入字段

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

为了不可见地复制文本,您可以快速生成textArea,修改框中的文本,选中它,复制它,然后删除textArea。 在大多数情况下,这个文本区域甚至不会闪到屏幕上。

出于安全原因,如果用户采取某种行动(即单击按钮),浏览器将只允许您复制。 一种方法是将一个onClick事件添加到一个html按钮,该按钮调用复制文本的方法。

一个完整的例子看起来像

<html>
<head>
    <title>copy test</title>
</head>
<body>
    <button onclick="copier()">Copy</button>
    <textarea id="myText">Copy me PLEASE!!!</textarea>

    <script>
        function copier(){
            document.getElementById('myText').select();
            document.execCommand('copy');
        }
    </script>
</body>
</html>

出于安全原因,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;
}

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

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


联机电子表格挂钩Ctrl + C,Ctrl + V事件并将焦点转移到隐藏的TextArea控件,并将其内容设置为所需的新剪贴板内容以进行复制,或在事件完成粘贴后读取其内容。

另请参阅使用Javascript可以在Firefox,Safari和Chrome中阅读剪贴板吗?

链接地址: http://www.djcxy.com/p/3321.html

上一篇: Copy / Put text on the clipboard with FireFox, Safari and Chrome

下一篇: How does Trello access the user's clipboard?