Tengo una página web con código JavaScript que copia cosas en el portapapeles de forma similar a lo que hace esta demostración: https://davidwalsh.name/demo/javascript-copy-clipboard.php
Mi código es algo como esto:
// Within a listener that is triggered by a click on some button: var copiedText = "...something"; navigator.clipboard.writeText(copiedText).then( function() { console.log("Succesfully copied"); }, function() { console.log("FAILED to copy!!!!!!"); } );Esto funciona bien, pero siempre tiene éxito. Necesito probar que el comportamiento es correcto cuando la copia falla por cualquier motivo.
¿Cómo puedo hacer que la copia falle a propósito para poder probar el comportamiento de mi código en esa situación?
Nunca recibo un aviso pidiéndome permiso para escribir en el portapapeles.
En Chrome, he intentado ir a la configuración del sitio y, en "Portapapeles", seleccionar "Bloquear", pero no hace nada (supongo que eso es solo para leer desde el portapapeles).
Claro, solo proporcione un argumento no válido que generará una excepción durante el algoritmo de encadenamiento:
Tenga en cuenta que esta demostración funcionará en su propia página, pero el caso de éxito no funcionará en el espacio aislado iframe del fragmento de código de desbordamiento de pila (donde no hay permiso de portapapeles).
function copyThenLog (input) { navigator.clipboard.writeText(input).then( () => console.log({success: true}), (ex) => { console.log({success: false}); console.error(ex); }, ); } document.querySelector('.success').addEventListener('click', () => { const input = 'hello world'; copyThenLog(input); }); document.querySelector('.fail').addEventListener('click', () => { const input = { toString () { throw new Error('Oops'); } }; copyThenLog(input); }); <div class="success">Click me to succeed</div> <div class="fail">Click me to fail</div>