如果事件对象是因为某个复制或粘贴事件而被调度,则该事件对象的 clipboardData 属性允许您读取和写入剪贴板数据。
若要在处理复制或剪切事件时写入剪贴板,请使用 clipboardData 对象的 setData() 方法,并传递要复制的数据和 MIME 类型:
function customCopy(event){
event.clipboardData.setData("text/plain", "A copied string.");
}
若要访问被粘贴的数据,您可以使用 clipboardData 对象的 getData() 方法,并传递数据格式的 MIME 类型。可用格式由 types 属性报告。
function customPaste(event){
var pastedData = event.clipboardData("text/plain");
}
只能在 paste 事件调度的事件对象中访问 getData() 方法和 types 属性。
下面的示例说明如何覆盖 HTML 页中默认的复制和粘贴行为。copy 事件处理函数将复制的文本设置为斜体并将其作为 HTML 文本复制到剪贴板。cut 事件处理函数将选定的数据复制到剪贴板并将其从文档中移除。paste 处理函数将剪贴板内容作为 HTML 插入并将插入内容的样式设置为粗体文本。
<html>
<head>
<title>Copy and Paste</title>
<script language="javascript" type="text/javascript">
function onCopy(event){
var selection = window.getSelection();
event.clipboardData.setData("text/html","<i>" + selection + "</i>");
event.preventDefault();
}
function onCut(event){
var selection = window.getSelection();
event.clipboardData.setData("text/html","<i>" + selection + "</i>");
var range = selection.getRangeAt(0);
range.extractContents();
event.preventDefault();
}
function onPaste(event){
var insertion = document.createElement("b");
insertion.innerHTML = event.clipboardData.getData("text/html");
var selection = window.getSelection();
var range = selection.getRangeAt(0);
range.insertNode(insertion);
event.preventDefault();
}
</script>
</head>
<body onCopy="onCopy(event)"
onPaste="onPaste(event)"
onCut="onCut(event)">
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam
voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur
magni dolores eos qui ratione voluptatem sequi nesciunt.</p>
</body>
</html>