在 Internet Explorer 中,我可以使用 clipboardData 对象访问剪贴板。如何在 FireFox、Safari 和/或 Chrome 中执行此操作?
使用 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;
}
唯一的缺点是这需要启用 Flash。
来源目前已死亡: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');
这将复制当前选定的文本。您可以使用以下命令选择 textArea 或输入字段
document.getElementById('myText').select();
隐形复制文本可以快速生成一个textArea,修改框中的文本,选中,复制,然后删除textArea。在大多数情况下,这个 textArea 甚至不会在屏幕上闪烁。
出于安全原因,浏览器仅允许您在用户执行某种操作(即单击按钮)时进行复制。一种方法是将 onClick 事件添加到 html 按钮,该按钮调用复制文本的方法。
一个完整的例子:
function copier(){
document.getElementById('myText').select();
document.execCommand('copy');
}
<button onclick="copier()">Copy</button>
<textarea id="myText">Copy me PLEASE!!!</textarea>
在线电子表格应用程序挂钩Ctrl+C和Ctrl+V事件并将焦点转移到隐藏的 TextArea 控件,并将其内容设置为所需的新剪贴板内容以进行复制或在事件完成后读取其内容进行粘贴。
现在是 2015 年夏天,围绕 Flash 有如此多的动荡,以下是完全避免使用它的方法。
clipboard.js是一个不错的实用程序,它允许将文本或 html 数据复制到剪贴板。它非常易于使用,只需包含 .js 并使用如下内容:
<button id='markup-copy'>Copy Button</button>
<script>
document.getElementById('markup-copy').addEventListener('click', function() {
clipboard.copy({
'text/plain': 'Markup text. Paste me into a rich text editor.',
'text/html': '<i>here</i> is some <b>rich text</b>'
}).then(
function(){console.log('success'); },
function(err){console.log('failure', err);
});
});
</script>
clipboard.js 也在GitHub 上。
截至 2017 年,您可以这样做:
function copyStringToClipboard (string) {
function handler (event){
event.clipboardData.setData('text/plain', string);
event.preventDefault();
document.removeEventListener('copy', handler, true);
}
document.addEventListener('copy', handler, true);
document.execCommand('copy');
}
现在复制 copyStringToClipboard('Hello, World!')
如果您注意到这一setData
行,并想知道是否可以设置不同的数据类型,那么答案是肯定的。