Me gustaría saber una forma de hacer que mi script detecte el contenido del portapapeles y lo pegue en un campo de texto cuando se abre la página, sin que el usuario ingrese. ¿Cómo puede hacerse esto?
Me gustaría saber una forma de hacer que mi script detecte el contenido del portapapeles y lo pegue en un campo de texto cuando se abre la página, sin que el usuario ingrese. ¿Cómo puede hacerse esto?
Respuestas:
window.clipboardData.getData('Text')
funcionará en algunos navegadores. Sin embargo, muchos navegadores en los que funciona le preguntará al usuario si desea o no que la página web tenga acceso al portapapeles.
Utilice la nueva API del portapapeles , a través de navigator.clipboard
. Se puede usar así:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
O con sintaxis asincrónica:
const text = await navigator.clipboard.readText();
Tenga en cuenta que esto le pedirá al usuario un cuadro de diálogo de solicitud de permiso, por lo que no es posible un negocio divertido.
El código anterior no funcionará si se llama desde la consola. Solo funciona cuando ejecuta el código en una pestaña activa. Para ejecutar el código desde su consola, puede establecer un tiempo de espera y hacer clic en la ventana del sitio web rápidamente:
setTimeout(async () => {
const text = await navigator.clipboard.readText();
console.log(text);
}, 2000);
Obtenga más información sobre la API y el uso en los documentos para desarrolladores de Google .
setTimeout
, luego haciendo clic de nuevo en la página.
Puedes usar
window.clipboardData.getData('Text')
para obtener el contenido del portapapeles del usuario en IE. Sin embargo, en otros navegadores es posible que deba usar flash para obtener el contenido, ya que no existe una interfaz estándar para acceder al portapapeles. Puede que puedas probar este complemento Zero Clipboard
A continuación, obtendrá el contenido seleccionado y actualizará el portapapeles.
Vincula la identificación del elemento con el evento de copia y luego obtén el texto seleccionado. Puede reemplazar o modificar el texto. Obtenga el portapapeles y configure el nuevo texto. Para obtener el formato exacto, debe establecer el tipo como "texto / hmtl". También puede vincularlo al documento en lugar de al elemento.
document.querySelector('element').bind('copy', function(event) {
var selectedText = window.getSelection().toString();
selectedText = selectedText.replace(/\u200B/g, "");
clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
clipboardData.setData('text/html', selectedText);
event.preventDefault();
});