Obter o conteúdo atual da área de transferência?

Eu gostaria de saber uma maneira de fazer o meu script detectar o conteúdo da área de transferência e colá-lo em um campo de texto quando a página for aberta, sem nenhuma input do usuário. Como pode ser feito?

Você não pode realmente saber o que está na área de transferência de um usuário, a menos que você tenha usado algum tipo de back-end flash quando copiou o texto.


Atualização: uma resposta mais correta aqui

window.clipboardData.getData('Text') funcionará em alguns navegadores. No entanto, muitos navegadores em que ele funciona irão perguntar ao usuário se desejam ou não que a página da Web tenha access à área de transferência.

Você pode usar

 window.clipboardData.getData('Text') 

para obter o conteúdo da área de transferência do usuário no IE. No entanto, em outro navegador, você pode precisar usar o flash para obter o conteúdo, já que não há uma interface padrão para acessar a área de transferência. Pode ser que você possa experimentar este plugin Zero Clipboard

Dependendo de quando você lê isso, a nova API da área de transferência pode estar disponível via navigator.clipboard . Pode ser usado assim:

 navigator.clipboard.readText() .then(text => { console.log('Pasted content: ', text); }) .catch(err => { console.error('Failed to read clipboard contents: ', err); }); 

Lembre-se de que isso fará com que o usuário solicite uma checkbox de diálogo de solicitação de permissão, portanto, não há negócios engraçados, infelizmente.

Mais sobre isso

Spec

A seguir, você terá o conteúdo selecionado, além de atualizar a área de transferência.

Vincule o ID do elemento com o evento copy e, em seguida, obtenha o texto selecionado. Você pode replace ou modificar o texto. Obtenha a área de transferência e defina o novo texto. Para obter a formatação exata, você precisa definir o tipo como “text / hmtl”. Você também pode vinculá-lo ao documento em vez de ao elemento.

  $(ElementId).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(); });