La propiedad
clipboardData
del objeto de evento distribuido como resultado de uno de los eventos de copiar o pegar permite leer y escribir datos en el portapapeles.
Para escribir en el portapapeles al controlar un evento de copiar o cortar, utilice el método
setData()
del objeto
clipboardData
, pasando los datos a copiar y el tipo MIME:
function customCopy(event){
event.clipboardData.setData("text/plain", "A copied string.");
}
Para tener acceso a los datos que se pegan se puede utilizar el método
getData()
del objeto
clipboardData
, pasando el tipo MIME del formato de los datos. Los formatos disponibles los notifica la propiedad
types
.
function customPaste(event){
var pastedData = event.clipboardData("text/plain");
}
Solo se tiene acceso al método
getData()
y a la propiedad
types
en el objeto de evento distribuido por el evento
paste
.
El siguiente ejemplo ilustra cómo suprimir el comportamiento predeterminado de copiar y pegar en una página HTML. El controlador de eventos
copy
pone el texto copiado en cursiva y lo copia en el portapapeles como texto en formato HTML. El controlador de eventos
cut
copia los datos seleccionados en el portapapeles y los borra del documento. El controlador de eventos
paste
inserta el contenido del portapapeles en formato HTML y aplica el estilo negrita al texto insertado.
<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>