Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Copiar texto al portapapeles al hacer clic en una imagen.

Estas en el tema de Copiar texto al portapapeles al hacer clic en una imagen. en el foro de Javascript en Foros del Web. Pues lo dicho, necesito copia una pequeña linea de texto al porta papeles cuando hagan clic en una imagen, por ejemplo, si es con una ...
  #1 (permalink)  
Antiguo 16/01/2014, 04:38
VityOsma
Invitado
 
Mensajes: n/a
Puntos:
Busqueda Copiar texto al portapapeles al hacer clic en una imagen.

Pues lo dicho, necesito copia una pequeña linea de texto al porta papeles cuando hagan clic en una imagen, por ejemplo, si es con una función de Javascript, algo como:

onClick="copyToClipboard('hola')"

Cada imagen llevara un texto diferente generado con un script PHP, así que escribiré el texto directamente en el evento onClick.

Alguien tiene alguna idea de como podría hacerlo, me da igual que lenguaje de programación usar (jQuery, PHP, Javascript etc...) y si es necesario usar flash (que algo he visto por ahí con flash) se usa, lo suyo sería que funcionase en todos los navegadores, y de momento no va en ninguno, así cualquier ayuda me vendrá bien. Gracias! Si alguien piensa que no se puede o lo ha intentado y se ha dado por vencido que lo comente también.
  #2 (permalink)  
Antiguo 16/01/2014, 05:43
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Copiar texto al portapapeles al hacer clic en una imagen.

Esta pregunta es de javascript y solo puede hacerse con javascript (y con el permiso del cliente)

PHP opera en el servidor, por lo que no puede controlar el equipo del cliente.

Código Javascript:
Ver original
  1. function copyToClipboard(text)
  2. {
  3.     if (window.clipboardData) // Internet Explorer
  4.     {  
  5.         window.clipboardData.setData("Text", text);
  6.     }
  7.     else
  8.     {  
  9.         unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
  10.         const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);  
  11.         clipboardHelper.copyString(text);
  12.     }
  13. }

Esa podría ser la función en javascript, pero recuerda, todos los navegadores vienen con el acceso al portapapeles bloqueado por seguridad y debe activarse manualmente, en firefox es algo complicado, en internet explorer es todo un desafío...

El problema de esto es que tendrás que decirle a todos tus clientes que lo habiliten.

una opcion alternativa es hacer algo asi:

Código Javascript:
Ver original
  1. function copyToClipboard(text)
  2. {
  3.     window.prompt("Copia este texto:", text);
  4.     }
  5. }
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 17/01/2014, 18:33
Avatar de DrFaust  
Fecha de Ingreso: septiembre-2011
Ubicación: Buenos Aires
Mensajes: 308
Antigüedad: 13 años, 2 meses
Puntos: 87
Respuesta: Copiar texto al portapapeles al hacer clic en una imagen.

Coincido con stramin.

Tradicionalmente la solución a los problemas de portapapeles era usar Flash. Existen películas Flash a las que podés pasarle un texto arbitrario, y la película se encarga de cargarlo en el portapapeles del usuario. Internet está lleno de tutoriales al respecto; buscá "copy text to clipboard with Flash". ZeroClipboard es una de estas soluciones.

Hoy en día, con la proliferación de dispositivos que no corren Flash, me decantaría por una opción como la de stramin: mostrar una ventana elegante al usuario e indicarle que copie ese texto manualmente.

Si querés complicarte la vida, podés detectar las features del dispositivo del usuario con alguna librería JavaScript especializada como Modernizr, y decidir entre usar Flash o una ventana para copiar manualmente.

Por último, si te quedan neuronas sanas, existe un truquito inventado por un miembro del equipo de Trello que es extremadamente original. Esencialmente le pedís al usuario que clickee en el elemento que desea copiar, y que aprete CTRL + C (el acceso directo de copiar, al que la mayoría de los usuarios están acostumbrados). Entonces, con JavaScript, detectás esto y seleccionás un texto invisible, para que el navegador lo copie al portapapeles. Acá está la técnica, explicada por el inventor:

http://stackoverflow.com/questions/1...sers-clipboard
__________________
Desarrollador web profesional

Última edición por DrFaust; 17/01/2014 a las 18:40
  #4 (permalink)  
Antiguo 22/01/2014, 14:27
VityOsma
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Copiar texto al portapapeles al hacer clic en una imagen.

Al final he puesto que al pasar el ratón por encima aparezca una capa al lado con el texto que se va a copiar ya seleccionado para que el usuario pulse control+c, el ZeroClipboard en flash no he conseguido utilizarlo, pero el resultado ha sido bueno, gracias!

Etiquetas: php, portapapeles
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:39.