Encontrei muitas soluções para copiar para a área de transferência, mas todas elas com flash ou para sites. Estou procurando um método para copiar para a área de transferência automaticamente, sem flash e para o lado do usuário, é para scripts de usuário e, claro, cross-browser.
javascript
jquery
clipboard
Sol preto
fonte
fonte
Respostas:
Sem o flash, isso simplesmente não é possível na maioria dos navegadores. A área de transferência do usuário é um recurso relevante para a segurança, pois pode conter coisas como senhas ou números de cartão de crédito. Assim, os navegadores corretamente não permitem o acesso Javascript a ele (alguns permitem com um aviso mostrado que o usuário confirmou, ou com código Javascript assinado, mas nada disso é cross-browser).
fonte
Já tinha experimentado a solução flash e também não gostei. Muito complexo e muito lento. O que fiz foi criar uma textarea, colocar os dados nela e usar o comportamento "CTRL + C" do navegador.
A parte jQuery javascript:
A parte HTML:
<textarea id="textArea1"></textarea>
Agora, coloque o que você deseja copiar em 'COLOQUE O TEXTO PARA COPIAR AQUI. PODE SER UMA FUNÇÃO. ' área. Funciona bem para mim. Você só precisa fazer uma combinação CTRL + C. A única desvantagem é que você terá uma área de texto feia exibida em seu site. Se você usar o style = "display: none", a solução de cópia não funcionará.
fonte
e.metaKey
na comparação keydown, mas por algum motivo, a ação de cópia não é acionada. Veja este violino: jsfiddle.net/gableroux/gta67/1clipboard.js acaba de ser lançado para copiar para a área de transferência sem a necessidade do Flash
Veja-o em ação aqui> http://zenorocha.github.io/clipboard.js/#example-action
fonte
Finalmente está aqui! (Contanto que você não suporte Safari ou IE8 ... -_-)
Agora você pode realmente controlar as ações da área de transferência sem Flash. Aqui está a documentação relevante:
https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
https://developers.google.com/web/updates/2015/04/cut-and-copy-commands?hl=en
https://msdn.microsoft.com/en-us/library/hh801227%28v=vs.85%29.aspx#copy
fonte
Enquanto esperava impacientemente pelo suporte do Xbrowser para a API Clipboard ...
Isso funcionará perfeitamente no Chrome, Firefox, Edge, IE
O IE solicitará ao usuário apenas uma vez para acessar a área de transferência.
Safari (5.1 no momento da escrita) não oferece suporte
execCommand
paracopy/cut
Todos os navegadores (exceto o Firefox, que só consegue lidar com o tipo MIME
"plain/text"
, até onde testei) não implementaram a API Clipboard . Ou seja, tentando ler o evento da área de transferência no Chrome usandothrows: Uncaught TypeError: Illegal constructor
O melhor recurso da incrível bagunça que está acontecendo entre os navegadores e a área de transferência pode ser visto aqui (caniuse.com) (→ Siga os comentários em "Notas" ).
MDN diz que o suporte básico é "(SIM)" para todos os navegadores, o que é impreciso porque seria de se esperar que pelo menos a API funcionasse.
fonte
Você pode usar uma área de transferência local para a página HTML. Isso permite que você copie / recorte / cole conteúdo DENTRO da página HTML, mas não de / para aplicativos de terceiros ou entre duas páginas HTML.
É assim que você pode escrever uma função personalizada para fazer isso (testado no Chrome e Firefox):
Aqui está o FIDDLE que demonstra como você pode fazer isso.
Também colarei o violino aqui para referência.
HTML
JS
fonte
window
. Não é uma área de transferência real disponível para o sistema operacional e outra guia do navegador. Além disso, a seleção pode ser feita facilmente usandoselect()
e não simplesmentewindow.getSelection()
document.execCommand('copy')
vai fazer o que você quiser. Mas não havia exemplos diretamente utilizáveis neste segmento sem cruft, então aqui está:fonte
Não tem jeito, você tem que usar o flash. Há um plug-in JQuery chamado jquery.copy que fornece copiar e colar no navegador cruzado usando um arquivo flash (swf). Isso é semelhante a como funciona o realce de sintaxe no meu blog.
Depois de fazer referência ao arquivo jquery.copy.js, tudo o que você precisa fazer para enviar os dados para a área de transferência é executar o seguinte:
Legal e fácil ;)
fonte