¿Existen nuevas soluciones para copiar múltiples grupos de texto al portapapeles a través de JavaScript / Flash, desde Flash 10?

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

Pregunta

Desde que se introdujo Flash 10, muchos de los scripts populares de 'copiar al portapapeles' han dejado de funcionar debido a las nuevas restricciones de seguridad. Aquí hay una solución solo para Flash:

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

... aunque estoy buscando la capacidad de activar la función de copia a través de JS, en lugar de confiar en que el usuario haga clic en un objeto Flash para activarlo.

Para ver un ejemplo de lo que empleamos actualmente, consulte:

http://snipt.net/public

Cualquiera de los enlaces 'copiar' usa el complemento de copia de jQuery aquí:

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

ACTUALIZACIÓN: OK, así que probé ZeroClipboard. A primera vista, se veía genial. Sin embargo, la cantidad de código redundante necesario para habilitar múltiples enlaces de portapapeles es inaceptable . En algunos casos, habrá más de 40 instancias de texto que tienen su propio enlace de "copia". Todavía busco una mejor solución ...

¿Fue útil?

Solución

Esa es una noticia terrible, ni siquiera me había dado cuenta. También uso mucho el truco de Flash. Hasta donde sé, esa era la única forma de hacer que la copia funcionara sin tener que instalar algún otro complemento (además del ubicuo Flash) debido a problemas de seguridad del navegador.

Actualización: después de mucho pánico y algunas búsquedas en Google, me topé con http: // code .google.com / p / zeroclipboard / que proporciona un truco compatible con Flash 10 para que la copia vuelva a funcionar. Ahora para ir actualizando sitios web ...

Otros consejos

Esta solución solo funciona para las pulsaciones de teclas que invocarían la operación deseada. Funciona moviendo el cursor del usuario a un elemento de área de texto antes de que el usuario finalice la pulsación de tecla relevante. Solo funciona para el ingreso de texto. Tengo esto trabajando en Firefox y Chrome. IE puede usar el objeto clipboardData (que es preferible a este truco).

En su html, en algún lugar, debe crear un elemento textarea con atributos arbitrariamente grandes de filas y cols. El elemento ' clipboard-textarea ' será el área de espera para los datos pegados y copiados. Oculto el elemento usando algunos atributos de estilo.

El guión:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top