É possível ler a área de transferência no Firefox, Safari e Chrome usando Javascript?

StackOverflow https://stackoverflow.com/questions/233719

Pergunta

Eu estou tentando ler o conteúdo da área de transferência usando JavaScript. Com o Internet Explorer, é possível utilizar a função

window.clipboardData.getData("Text")

Existe uma maneira semelhante de ler a área de transferência no Firefox, Safari e Chrome?

Foi útil?

Solução

O Safari suporta leitura a área de transferência durante eventos onpaste:

informações

Você quer fazer 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) {
        // ...
    }
};

Outras dicas

planilhas on-line ligar Ctrl + C, eventos Ctrl + V e foco transferência para um controle TextArea escondido e quer configurá-lo conteúdo para novos conteúdos da área de transferência desejados para cópia ou ler o seu conteúdo após o evento tinha acabado para colar.

NO. E se você encontrar um hack (por exemplo versão antiga do flash) não dependem disso.

Posso perguntar por que você quer ler a partir da área de transferência? Se o usuário deseja passar adiante o conteúdo da área de transferência, tudo que eles precisam fazer é colar.

Eu acredito que as pessoas usam um elemento flash escondido para ler os dados da área de transferência a partir dos navegadores que você mencionou.

Usando sugestão @agsamek eu criei um pequeno teste cortou e tenho que trabalhar. No meu caso eu preciso esperar após um pageload fresco para entrada colado, então eu me concentro em uma textarea out-of-view e ler o texto a partir daí.

Você poderia estender isso para ouvir a teclas específicas (colar combinação) e depois se concentrar no campo escondido. Há certamente mais trabalho a ser feito como eu acho que você precisa re-foco, em seguida, no último elemento focalizado e colar conteúdo lá.

Para o meu caso de uso que este foi o suficiente para fazê-lo funcionar no mais recente Chrome e Firefox. Sugestões bem-vindos.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top