En Internet Explorer puedo usar el objeto clipboardData para acceder al portapapeles. ¿Cómo puedo hacer eso en FireFox, Safari y / o Chrome?
javascript
dom
clipboard
GvS
fuente
fuente
copy
, developer.chrome.com/devtools/docs/commandline-apiRespuestas:
Ahora hay una forma de hacer esto fácilmente en la mayoría de los navegadores modernos usando
Esto copiará el texto seleccionado actualmente. Puede seleccionar un área de texto o un campo de entrada usando
Para copiar texto de forma invisible, puede generar rápidamente un área de texto, modificar el texto en el cuadro, seleccionarlo, copiarlo y luego eliminar el área de texto. En la mayoría de los casos, este área de texto ni siquiera parpadea en la pantalla.
Por razones de seguridad, los navegadores solo le permitirán copiar si un usuario realiza algún tipo de acción (es decir, hacer clic en un botón). Una forma de hacer esto sería agregar un evento onClick a un botón html que llama a un método que copia el texto.
Un ejemplo completo:
fuente
Por razones de seguridad, Firefox no le permite colocar texto en el portapapeles. Sin embargo, existe una solución alternativa disponible con Flash.
La única desventaja es que esto requiere que Flash esté habilitado.
la fuente está muerta actualmente: http://bravo9.com/journal/copying-text-into-the-clipboard-with-javascript-in-firefox-safari-ie-opera-292559a2-cc6c-4ebf-9724-d23e8bc5ad8a/ ( y también lo es el caché de Google )
fuente
Las hojas de cálculo en línea enganchan los eventos Ctrl + C, Ctrl + V y transfieren el foco a un control TextArea oculto y configuran su contenido en el nuevo contenido deseado del portapapeles para copiar o leer su contenido después de que el evento haya terminado para pegarlo.
ver también ¿Es posible leer el portapapeles en Firefox, Safari y Chrome usando Javascript?
fuente
Es el verano de 2015, y con tanta confusión en torno a Flash, pensé en agregar una nueva respuesta a esta pregunta que evite su uso por completo.
clipboard.js es una buena utilidad que permite copiar texto o datos html al portapapeles. Es muy fácil de usar, solo incluye el .js y usa algo como esto:
clipboard.js también está en GitHub
fuente
En 2017 puedes hacer esto (¡diciendo esto porque este hilo tiene casi 9 años!)
Y ahora para copiar
copyStringToClipboard('Hello World')
Si notó la
setData
línea y se preguntó si puede establecer diferentes tipos de datos, la respuesta es sí.fuente
.select()
en un cuadro de entrada antes de llamar a esto.Firefox te permite almacenar datos en el portapapeles, pero debido a implicaciones de seguridad, está deshabilitado de forma predeterminada. Vea cómo habilitarlo en "Otorgar acceso de JavaScript al portapapeles" en la base de conocimientos de Mozilla Firefox.
La solución ofrecida por amdfan es la mejor si tiene muchos usuarios y configurar su navegador no es una opción. Aunque puede probar si el portapapeles está disponible y proporcionar un enlace para cambiar la configuración, si los usuarios son expertos en tecnología. El editor de JavaScript TinyMCE sigue este enfoque.
fuente
La función copyIntoClipboard () funciona para Flash 9, pero parece estar rota por el lanzamiento de Flash Player 10. Aquí hay una solución que funciona con el nuevo Flash Player:
http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/
Es una solución compleja, pero funciona.
fuente
Debo decir que ninguna de estas soluciones realmente funciona . Probé la solución del portapapeles de la respuesta aceptada y no funciona con Flash Player 10. También probé ZeroClipboard y estuve muy contento con él por un tiempo.
Actualmente lo estoy usando en mi propio sitio ( http://www.blogtrog.com ), pero he notado errores extraños con él. La forma en que funciona ZeroClipboard es que coloca un objeto flash invisible en la parte superior de un elemento de su página. Descubrí que si mi elemento se mueve (como cuando el usuario cambia el tamaño de la ventana y tengo las cosas alineadas correctamente), el objeto flash ZeroClipboard se sale de control y ya no cubre el objeto. Sospecho que probablemente todavía esté donde estaba originalmente. Tienen un código que se supone que debe detener eso o volver a pegarlo en el elemento, pero no parece funcionar bien.
Entonces ... en la próxima versión de BlogTrog, supongo que seguiré su ejemplo con todos los demás resaltadores de código que he visto en la naturaleza y eliminaré mi botón Copiar al portapapeles. :-(
(Noté que la copia al portapapeles de dp.syntaxhiglighter también está rota).
fuente
pregunta demasiado antigua, pero no vi esta respuesta en ningún lado ...
Consulta este enlace:
http://kb.mozillazine.org/Granting_JavaScript_access_to_the_clipboard
como todos dijeron, por razones de seguridad está deshabilitado por defecto. el enlace de arriba muestra las instrucciones de cómo habilitarlo (editando about: config en firefox o el user.js).
Afortunadamente, hay un complemento llamado "AllowClipboardHelper" que facilita las cosas con solo unos pocos clics. sin embargo, aún debe instruir a los visitantes de su sitio web sobre cómo habilitar el acceso en Firefox.
fuente
Utilice el moderno document.execCommand ("copiar") y jQuery. Ver esta respuesta de stackoverflow
Como llamar:
fuente
He usado Clippy de Github para mis necesidades, un simple botón basado en Flash. Funciona bien, si uno no necesita estilo y está satisfecho con insertar lo que se va a pegar en el lado del servidor de antemano.
fuente
Una ligera mejora de la solución Flash es la detección de flash 10 mediante swfobject:
http://code.google.com/p/swfobject/
y luego, si aparece como flash 10, intente cargar un objeto Shockwave usando javascript. Shockwave puede leer / escribir en el portapapeles (en todas las versiones) y usar el comando copyToClipboard () en jerga.
fuente
http://www.rodsdot.com/ee/cross_browser_clipboard_copy_with_pop_over_message.asp funciona con Flash 10 y todos los navegadores compatibles con Flash.
Además, ZeroClipboard se ha actualizado para evitar el error mencionado sobre el desplazamiento de página que hace que la película Flash ya no esté en el lugar correcto.
Dado que ese método "Requiere" que el usuario haga clic en un botón para copiar, esto es conveniente para el usuario y no ocurre nada nefasto.
fuente
intente crear una variable global de memoria almacenando la selección, luego la otra función puede acceder a la variable y hacer un pegado, por ejemplo.
fuente
Si es compatible con flash, puede usar https://everyplay.com/assets/clipboard.swf y usar el texto de flashvars para configurar el texto
https://everyplay.com/assets/clipboard.swf?text=It%20Works
Ese es el que uso para copiar y puede configurarlo como extra si no admite estas opciones que puede usar:
Para Internet Explorer: window.clipboardData.setData (DataFormat, Text) y window.clipboardData.getData (DataFormat)
Puede usar el texto y la URL de DataFormat para getData y setData.
Y para borrar datos:
Puede utilizar el archivo, HTML, imagen, texto y URL de DataFormat. PD: necesita utilizar window.clipboardData.clearData (DataFormat);
Y para otros que no son compatibles con window.clipboardData y archivos flash swf, también puede usar el botón control + c en su teclado para Windows y para mac su comando + c
fuente
Desde el código de complemento:
En caso de que alguien más estuviera buscando cómo hacerlo desde el código de Chrome, puede usar la interfaz nsIClipboardHelper como se describe aquí: https://developer.mozilla.org/en-US/docs/Using_the_Clipboard
fuente
Utilice
document.execCommand('copy')
. Apoyado en las últimas versiones deChrome
,Firefox
,Edge
, ySafari
.fuente
La API del portapapeles está diseñada para reemplazar
document.execCommand
. Safari todavía está trabajando en el soporte, por lo que debe proporcionar un respaldo hasta que se establezcan las especificaciones y Safari finalice la implementación.Por razones de seguridad,
Permissions
puede ser necesario el portapapeles para leer y escribir desde el portapapeles. Si el fragmento de código no funciona en SO, inténtelo enlocalhost
un dominio de confianza.fuente
Partiendo de la excelente respuesta de @David de Studio.201, esto funciona en Safari, FF y Chrome. También garantiza que no se produzcan flashes desde el
textarea
colocándolo fuera de la pantalla.fuente