Existem novas soluções para copiar vários grupos de texto para área de transferência via JavaScript / Flash, desde Flash 10?

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

Pergunta

Desde Flash 10 foi introduzido, muitos dos populares 'copiar para área de transferência' de scripts lá fora pararam de funcionar devido a novas restrições de segurança. Há um flash única solução aqui:

http: //cfruss.blogspot .com / 2009/01 / copy-to-clipboard-swf-button-cross.html

... embora eu estou procurando a capacidade de acionar a função de cópia via JS, em vez de depender o usuário a clicar em um objeto Flash para gatilho.

Para um exemplo do que empregam actualmente, consulte:

http://snipt.net/public

qualquer um dos links 'copiar' usar cópia do plugin jQuery aqui:

http://plugins.jquery.com/project/copy

UPDATE: OK, então eu tentei ZeroClipboard. À primeira vista, parecia ótimo. No entanto, a quantidade de código redundante necessário para permitir várias ligações prancheta é inaceitável . Em alguns casos, haverá mais de 40 ocorrências de texto que cada um tem seu próprio link 'cópia'. Ainda à procura de uma solução melhor ...

Foi útil?

Solução

Isso é terrível notícia, eu não tinha sequer notado. I usar o truque do Flash extensivamente também. Tanto quanto eu sei que era a única maneira de obter cópia de trabalho sem ter que instalar algum outro plugin (além do flash onipresente) devido a preocupações de segurança do navegador.

Update: Depois de muito pânico, e algumas pesquisas no Google, eu tropecei em http: // código .google.com / p / zeroclipboard / que fornece um truque compatível flash 10 para obter a cópia de trabalho mais uma vez. Agora, para ir ao redor de atualizar sites ...

Outras dicas

Esta solução só funciona para as teclas digitadas que invocam a operação desejada. Ele funciona movendo o cursor do usuário em um elemento textarea antes que o usuário termina a tecla relevante. Ele só funciona para entrada de texto. Eu tenho esse trabalho no Firefox e Chrome. IE pode usar o objeto clipboardData (que é preferível a este hack).

Em seu lugar html você deve criar um elemento textarea com arbitrariamente grandes linhas e atributos cols. O ' clipboard-textarea ' elemento será a área de retenção para os dados colados e copiados. I ocultar o elemento utilizando alguns atributos de estilo.

O script:

var desiredClipboardContents = 'It works';

function onCopyKeyPressed() {
   // The trick here is to populate the textarea with
   // the text you want copied before the user releases
   // the copy keystroke.
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = desiredClipboardContents;
   textarea.focus();
   textarea.select();
}

function onPasteKeyPressed() {
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = '';
   textarea.focus();
   // The trick here is to delay slurping the content
   // that arrives in the textarea element until after
   // the paste keystroke is completed. The 750 ms timeout
   // provides the necessary delay.
   setTimeout("finishedPasting", 750);
}

function finishedPasting() {
   var textarea = document.getElementById('clipboard-textarea');
   alert("Received from clipboard-paste: " + textarea.value);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top