2008-11-25 25 views
5

Estoy tratando de escribir un script de JavaScript para agregar a greasemonkey que agrega un botón después de un elemento. El onClick para este botón debe copiar el texto del elemento de los padres en el teclado. He visto un montón de ejemplos que ya Copia el texto seleccionado en el portapapeles como este:Greasemonkey JavaScript Copiar en el botón del Portapapeles

<SCRIPT LANGUAGE="JavaScript"> 
    <!-- Begin 
    function copyit(theField) { 
    var selectedText = document.selection; 
    if (selectedText.type == 'Text') { 
    var newRange = selectedText.createRange(); 
    theField.focus(); 
    theField.value = newRange.text; 
    } else { 
    alert('Alert: Select The text in the textarea then click on this button'); 
    } 
    } 
    // End --> 
    </script> 
    <input onclick="copyit(this.form.text_select)" type="button" value="Click Here to Copy the Highlighted Text" name="copy_button"> 

encontrado here.

También he encontrado que puede seleccionar texto en los elementos de entrada. Intenté combinar ambas técnicas, así como muchas otras sin una solución viable todavía. Ni siquiera estoy seguro de por qué el código anterior copia en el portapapeles. ¿Alguien tiene una solución para esto?

+0

También tenga en cuenta: https://developer.mozilla.org/en/Using_the_Clipboard – javamonkey79

Respuesta

5

Si usted se tomó el tiempo para leer el artículo completo, el autor afirma esto no funciona para Firefox ...
En realidad, creo que ya no funciona ni para IE, ya que no hace nada relacionado con el portapapeles!

Hay una técnica que usa Flash, porque de manera predeterminada, Firefox impide el acceso al portapapeles por razones de seguridad.
De lo contrario, la forma clásica de hacer copia es:

var tc = textToCopy.replace(/\n\n/g, '\n'); 
if (window.clipboardData) // IE 
{ 
    window.clipboardData.setData("Text", tc); 
} 
else 
{ 
    unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
    const clipboardHelper = Components.classes 
     ["@mozilla.org/widget/clipboardhelper;1"]. 
     getService(Components.interfaces.nsIClipboardHelper); 
    clipboardHelper.copyString(tc); 
} 

después de habilitar la copia (para un sitio determinado).

+5

Me tomé el tiempo para leer el artículo completo - Me perdí la "nota"; no hay razón para ser irritable, todos cometemos errores. No obstante, tu solución es la correcta, gracias. – javamonkey79

1

¿Estás seguro de que tu ejemplo funciona? No está en mi navegador. Pero echar un vistazo a la siguiente página: http://www.jeffothy.com/weblog/clipboard-copy/

+0

Funciona en FF 3.0.4, pero debe seleccionar el texto para que el botón de copia funcione. He visto esa publicación en el blog, y se basa en el uso de flash para copiar, lo que no funciona para lo que estoy tratando de hacer. Gracias sin embargo. :) – javamonkey79

Cuestiones relacionadas