Encontré muchas soluciones para copiar al portapapeles, pero todas con flash o para sitios web. Estoy buscando un método para copiar al portapapeles automáticamente, sin flash y para el lado del usuario, es para scripts de usuario y, por supuesto, entre navegadores.
javascript
jquery
clipboard
Negro sol
fuente
fuente
Respuestas:
Sin flash, simplemente no es posible en la mayoría de los navegadores. El portapapeles del usuario es un recurso relevante para la seguridad, ya que podría contener elementos como contraseñas o números de tarjetas de crédito. Por lo tanto, los navegadores no permiten el acceso de Javascript (algunos lo permiten con una advertencia que muestra que el usuario ha confirmado, o con un código Javascript firmado, pero nada de eso es entre navegadores).
fuente
Había probado la solución flash y tampoco me gustó. Demasiado complejo y demasiado lento. Lo que hice fue crear un área de texto, poner los datos en eso y usar el comportamiento "CTRL + C" del navegador.
La parte de jQuery javascript:
La parte HTML:
<textarea id="textArea1"></textarea>
Ahora, ponga lo que quiere copiar en 'PONGA EL TEXTO A COPIAR AQUÍ. PUEDE SER UNA FUNCIÓN '. zona. Funciona bien para mí. Solo tienes que hacer una combinación CTRL + C. El único inconveniente es que se mostrará un área de texto desagradable en su sitio. Si usa style = "display: none", la solución de copia no funcionará.
fuente
e.metaKey
en la comparación de teclado, pero por alguna razón, la acción de copia no se activa. Vea este violín: jsfiddle.net/gableroux/gta67/1clipboard.js acaba de ser lanzado para copiar al portapapeles sin necesidad de Flash
Véalo en acción aquí> http://zenorocha.github.io/clipboard.js/#example-action
fuente
¡Finalmente está aquí! (Siempre que no sea compatible con Safari o IE8 ... -_-)
Ahora puede manejar las acciones del portapapeles sin Flash. Aquí está la documentación 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=es
https://msdn.microsoft.com/en-us/library/hh801227%28v=vs.85%29.aspx#copy
fuente
Mientras espera con impaciencia la compatibilidad de Xbrowser con la API del portapapeles ...
Esto funcionará a la perfección en Chrome, Firefox, Edge, IE
IE solo solicitará al usuario una vez que acceda al Portapapeles.
Safari (5.1 en el momento de escribir este artículo) no es compatible
execCommand
concopy/cut
Todos los navegadores (excepto Firefox, que solo puede manejar el tipo mime
"plain/text"
hasta donde he probado) no han implementado la API del Portapapeles . Es decir, tratando de leer el evento del portapapeles en Chrome usandothrows: Uncaught TypeError: constructor ilegal
El mejor recurso del increíble lío que está sucediendo entre los navegadores y el Portapapeles se puede ver aquí (caniuse.com) (→ Siga los comentarios en "Notas" ).
MDN dice que el soporte básico es "(SÍ)" para todos los navegadores, lo cual es inexacto porque uno esperaría que al menos la API funcione, en absoluto.
fuente
Puede utilizar un portapapeles local en la página HTML. Esto le permite copiar / cortar / pegar contenido DENTRO de la página HTML, pero no desde / hacia aplicaciones de terceros o entre dos páginas HTML.
Así es como puede escribir una función personalizada para hacer esto (probado en Chrome y Firefox):
Aquí está el FIDDLE que demuestra cómo puede hacer esto.
También pegaré el violín aquí como referencia.
HTML
JS
fuente
window
. No es un Portapapeles real disponible para el sistema operativo y otra pestaña del navegador. Además, la selección se puede hacer fácilmente usandoselect()
y que simplementewindow.getSelection()
document.execCommand('copy')
harás lo que quieras. Pero no había ejemplos directamente utilizables en este hilo sin cruft, así que aquí está:fuente
No hay forma de evitarlo, tienes que usar flash. Existe un complemento de JQuery llamado jquery.copy que proporciona copiar y pegar en varios navegadores mediante un archivo flash (swf). Esto es similar a cómo funciona el resaltador de sintaxis en mi blog.
Una vez que haga referencia al archivo jquery.copy.js, todo lo que necesita hacer para enviar datos al portapapeles es ejecutar lo siguiente:
Bonito y fácil ;)
fuente