使用FireFox,Safari和Chrome将文本复制/放在剪贴板上
2022-08-30 05:26:58
在 Internet Explorer 中,我可以使用剪贴板数据对象来访问剪贴板。如何在 FireFox、Safari 和/或 Chrome 中执行此操作?
在 Internet Explorer 中,我可以使用剪贴板数据对象来访问剪贴板。如何在 FireFox、Safari 和/或 Chrome 中执行此操作?
出于安全原因,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缓存也是如此))
现在有一种方法可以在大多数现代浏览器中轻松执行此操作,使用
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>