No Internet Explorer, posso usar o objeto clipboardData para acessar a área de transferência. Como posso fazer isso no FireFox, Safari e / ou Chrome?
javascript
dom
clipboard
GvS
fonte
fonte
copy
, developer.chrome.com/devtools/docs/commandline-apiRespostas:
Agora existe uma maneira de fazer isso facilmente na maioria dos navegadores modernos usando
Isso irá copiar o texto atualmente selecionado. Você pode selecionar uma textArea ou campo de entrada usando
Para copiar o texto de forma invisível, você pode gerar rapidamente um textArea, modificar o texto na caixa, selecioná-lo, copiá-lo e, em seguida, excluir o textArea. Na maioria dos casos, esse textArea nem pisca na tela.
Por motivos de segurança, os navegadores só permitirão a cópia se um usuário realizar algum tipo de ação (por exemplo, clicar em um botão). Uma maneira de fazer isso seria adicionar um evento onClick a um botão html que chama um método que copia o texto.
Um exemplo completo:
fonte
Por razões de segurança, o Firefox não permite que você coloque texto na área de transferência. No entanto, existe uma solução alternativa disponível usando o Flash.
A única desvantagem é que isso requer que o Flash esteja ativado.
a fonte está morta: http://bravo9.com/journal/copying-text-into-the-clipboard-with-javascript-in-firefox-safari-ie-opera-292559a2-cc6c-4ebf-9724-d23e8bc5ad8a/ ( e o cache do Google também )
fonte
Planilhas on-line conectam eventos Ctrl + C, Ctrl + V e transferem o foco para um controle TextArea oculto e definem seu conteúdo para o novo conteúdo da área de transferência desejado para copiar ou lê seu conteúdo após o evento terminar para colar.
veja também É possível ler a área de transferência no Firefox, Safari e Chrome usando Javascript?
fonte
É verão de 2015, e com tanta turbulência em torno do Flash, pensei em adicionar uma nova resposta a essa pergunta que evite seu uso.
clipboard.js é um bom utilitário que permite a cópia de texto ou dados html para a área de transferência. É muito fácil de usar, basta incluir o .js e usar algo assim:
clipboard.js também está no GitHub
fonte
Em 2017, você pode fazer isso (dizendo isso porque este tópico tem quase 9 anos!)
E agora para copiar
copyStringToClipboard('Hello World')
Se você percebeu a
setData
linha e se perguntou se pode definir diferentes tipos de dados, a resposta é sim.fonte
.select()
em uma caixa de entrada antes de chamar isso.O Firefox permite que você armazene dados na área de transferência, mas devido a implicações de segurança, ele é desabilitado por padrão. Veja como habilitá-lo em "Concedendo acesso JavaScript à área de transferência" na base de conhecimento do Mozilla Firefox.
A solução oferecida por amdfan é a melhor se você tiver muitos usuários e configurar o navegador deles não é uma opção. Embora você possa testar se a área de transferência está disponível e fornecer um link para alterar as configurações, se os usuários tiverem experiência em tecnologia. O editor JavaScript TinyMCE segue essa abordagem.
fonte
A função copyIntoClipboard () funciona para Flash 9, mas parece estar quebrada com o lançamento do Flash player 10. Esta é uma solução que funciona com o novo flash player:
http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/
É uma solução complexa, mas funciona.
fonte
Devo dizer que nenhuma dessas soluções realmente funciona. Tentei a solução da área de transferência a partir da resposta aceita e ela não funciona com o Flash Player 10. Também experimentei o ZeroClipboard e fiquei muito feliz com ele por algum tempo.
Atualmente estou usando em meu próprio site ( http://www.blogtrog.com ), mas tenho notado bugs estranhos nele. A forma como ZeroClipboard funciona é que ele coloca um objeto flash invisível no topo de um elemento em sua página. Descobri que se meu elemento se move (como quando o usuário redimensiona a janela e eu tenho as coisas alinhadas à direita), o objeto flash ZeroClipboard sai do lugar e não está mais cobrindo o objeto. Eu suspeito que provavelmente ainda está onde estava originalmente. Eles têm um código que supostamente interrompe isso ou o reenvia para o elemento, mas não parece funcionar bem.
Então ... na próxima versão do BlogTrog, acho que vou seguir o exemplo com todos os outros marcadores de código que vi à solta e remover meu botão Copiar para a área de transferência. :-(
(Percebi que a cópia para a área de transferência de dp.syntaxhiglighter também está corrompida agora.)
fonte
pergunta muito antiga, mas eu não vi essa resposta em lugar nenhum ...
Verifique este link:
http://kb.mozillazine.org/Granting_JavaScript_access_to_the_clipboard
como todo mundo disse, por razões de segurança está desabilitado por padrão. o link acima mostra as instruções de como habilitá-lo (editando about: config no firefox ou o user.js).
Felizmente, existe um plugin chamado "AllowClipboardHelper" que torna as coisas mais fáceis com apenas alguns cliques. no entanto, você ainda precisa instruir os visitantes do seu site sobre como habilitar o acesso no firefox.
fonte
Use document.execCommand moderno ("copiar") e jQuery. Veja esta resposta stackoverflow
Como ligar:
fonte
Eu usei o Clippy do Github para minhas necessidades, um botão simples baseado em Flash. Funciona muito bem, se alguém não precisar de estilo e estiver satisfeito em inserir o que colar no lado do servidor de antemão.
fonte
Uma pequena melhoria na solução Flash é detectar o Flash 10 usando swfobject:
http://code.google.com/p/swfobject/
e, se for exibido como flash 10, tente carregar um objeto Shockwave usando javascript. O Shockwave pode ler / escrever na área de transferência (em todas as versões) também usando o comando copyToClipboard () na linguagem.
fonte
http://www.rodsdot.com/ee/cross_browser_clipboard_copy_with_pop_over_message.asp funciona com Flash 10 e todos os navegadores habilitados para Flash.
Além disso, ZeroClipboard foi atualizado para evitar o bug mencionado sobre rolagem de página, fazendo com que o filme Flash não esteja mais no lugar correto.
Uma vez que esse método "requer" que o usuário clique em um botão para copiar, é uma conveniência para o usuário e nada de nefasto está ocorrendo.
fonte
tente criar uma variável global de memória armazenando a seleção, então a outra função pode acessar a variável e colar, por exemplo ..
fonte
Se você tem suporte para flash, pode usar https://everyplay.com/assets/clipboard.swf e usar o texto flashvars para definir o texto
https://everyplay.com/assets/clipboard.swf?text=It%20Works
É aquele que eu uso para copiar e você pode definir como extra se não suportar estas opções que você pode usar:
Para Internet Explorer: window.clipboardData.setData (DataFormat, Text) e window.clipboardData.getData (DataFormat)
Você pode usar o Texto e Url do DataFormat para getData e setData.
E para excluir dados:
Você pode usar o arquivo, HTML, imagem, texto e URL do DataFormat. PS: Você precisa usar window.clipboardData.clearData (DataFormat);
E para outros arquivos que não suportam window.clipboardData e swf flash, você também pode usar o botão control + c do teclado para windows e para mac seu comando + c
fonte
Do código addon:
Caso alguém esteja procurando como fazer isso no código do Chrome, você pode usar a interface nsIClipboardHelper conforme descrito aqui: https://developer.mozilla.org/en-US/docs/Using_the_Clipboard
fonte
Use
document.execCommand('copy')
. Compatível com as versões mais recentesChrome
,Firefox
,Edge
, eSafari
.fonte
A API Clipboard foi projetada para substituir
document.execCommand
. O Safari ainda está trabalhando no suporte, então você deve fornecer uma alternativa até que as especificações sejam estabelecidas e o Safari conclua a implementação.Por razões de segurança, a área de transferência
Permissions
pode ser necessária para ler e escrever a partir da área de transferência. Se o snippet não funcionar no SO, experimentelocalhost
ou em um domínio de outra forma confiável.fonte
Com base na excelente resposta de @David do Studio.201, isso funciona no Safari, FF e Chrome. Ele também garante que não ocorra flashing do
textarea
colocando-o fora da tela.fonte