Gostaria de saber uma maneira de fazer 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 entrada do usuário. Como pode ser feito?
Gostaria de saber uma maneira de fazer 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 entrada do usuário. Como pode ser feito?
Respostas:
window.clipboardData.getData('Text')
funcionará em alguns navegadores. No entanto, muitos navegadores nos quais funciona perguntarão ao usuário se ele deseja ou não que a página da web tenha acesso à área de transferência.
Use a nova API da área de transferência , via navigator.clipboard
. Ele pode ser usado assim:
navigator.clipboard.readText()
.then(text => {
console.log('Pasted content: ', text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
Ou com sintaxe assíncrona:
const text = await navigator.clipboard.readText();
Lembre-se de que isso exibirá ao usuário uma caixa de diálogo de solicitação de permissão, portanto, nenhum negócio engraçado será possível.
(NOTA: Isso não funcionará se chamado do console, mas exigirá uma ação direta do usuário, como pressionar um botão, obrigado @Artur)
setTimeout
e clicando novamente na página.
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, uma vez que não existe uma interface padrão para acessar a área de transferência. Pode ser que você possa experimentar este plugin Zero Clipboard
A seguir, você encontrará o conteúdo selecionado e também a atualização da área de transferência.
Vincule o id do elemento com o evento de cópia e, em seguida, obtenha o texto selecionado. Você pode substituir ou modificar o texto. Pegue 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();
});