Pregunta

Estoy tratando de leer el contenido del portapapeles usando Javascript. Con Internet Explorer es posible usar la función

window.clipboardData.getData("Text")

¿Existe una forma similar de leer el portapapeles en Firefox, Safari y Chrome?

¿Fue útil?

Solución

Safari admite la lectura del portapapeles durante los eventos onpaste :

Información

Quieres hacer algo como:

someDomNode.onpaste = function(e) {
    var paste = e.clipboardData && e.clipboardData.getData ?
        e.clipboardData.getData('text/plain') :                // Standard
        window.clipboardData && window.clipboardData.getData ?
        window.clipboardData.getData('Text') :                 // MS
        false;
    if(paste) {
        // ...
    }
};

Otros consejos

Las hojas de cálculo en línea enganchan los eventos Ctrl + C, Ctrl + V y transfieren el enfoque a un control TextArea oculto y configuran el contenido al nuevo contenido deseado del portapapeles para copiarlo o leen su contenido después de que el evento haya terminado de pegar.

NO. Y si encuentra un truco (por ejemplo, una versión anterior de flash), no dependa de él.

¿Puedo preguntarte por qué quieres leer desde el portapapeles? Si el usuario desea pasar el contenido del portapapeles, todo lo que necesita hacer es pegar.

Creo que las personas usan un elemento Flash oculto para leer los datos del portapapeles de los navegadores que mencionó.

Usando la sugerencia de @agsamek, creé una pequeña prueba cortada y la hice funcionar. En mi caso, debo esperar después de una nueva carga de página para la entrada pegada, así que me concentro en un área de texto fuera de vista y leo el texto desde allí.

Puede extender esto para escuchar teclas específicas (combinación de pegado) y luego enfocarse en el campo oculto. Definitivamente, habría más trabajo por hacer, ya que creo que necesitas volver a enfocarte en el último elemento enfocado y pegar el contenido allí.

Para mi caso de uso, esto fue suficiente para que funcionara en las últimas versiones de Chrome y Firefox. Sugerencias de bienvenida.

https://jsfiddle.net/wuestkamp/91dxjv7s/11/

$(function () {

    $('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');

    var $hiddenTextbox = $('#hidden_textbox');
    $hiddenTextbox.focus();

    $(document).on('paste', function () {
        setTimeout(function () {
            var val = $hiddenTextbox.val();

            console.log('pasted: ' + val);

        }, 50);

    });

});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top