2010-05-20 16 views

Respuesta

4

me encontré con la siguiente solución:

  1. Configurar un archivo de manifiesto para definir un script de contenido que se añade a cada página, y una página de fondo separado.
  2. En el archivo .js de Script de contenido, agregue un detector de eventos para el evento 'copiar', ya sea para el documento o la ventana. Este detector de eventos se invoca cada vez que el usuario inicia una acción de copia.
  3. Dado que las secuencias de comandos de contenido existen en un entorno limitado de seguridad (por ejemplo, no hay XMLHttpRequests entre sitios), es probable que deseemos responder al evento en la página de fondo. Para hacerlo, use la API de paso de mensajes de Chrome, así que envíe un mensaje a la página de fondo.

Un pequeño ejemplo de trabajo:

manifest.json

{ 
    "background_page": "background.html", 
    "content_scripts": [ 
     { 
     "matches": ["http://*/*"], 
     "js": ["oncopy.js"] 
     } 
    ] 
} 

oncopy.js

// on copy event, send a message to background.html 
function onCopy(e) { 
    chrome.extension.sendRequest({event: "copy"}); 
} 

//register event listener for copy events on document 
document.addEventListener('copy',onCopy,true); 

background.html

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
    if (request.event == "copy") { 
     alert("copy detected"); 
    } 
    sendResponse({}); 
    }); 
0

Usted tendrá que capturar onkeypress en el elemento de documento utilizando su propio controlador de eventos, compruebe que event.keyCode = 'C' (o el código ASCII) y que el event.ctrlKey = true

Si esto es válido, entonces es probable que el usuario copie el texto en la página actual.

También deberá capturar el evento tab.updated para saber cuándo vincular el evento onkeypress.

+0

Gracias, eso es un buen comienzo para detectar eventos de copia ejecutados mediante atajos de teclado. Probablemente necesite un mecanismo diferente para detectar el menú Edición -> copiar invocaciones, fuera de Javascript. – bjoern

0

Google Chrome Extensions tiene una API experimental para su uso que le permitirá ejecutar una copia, cortar y pegar. Actualmente existe en la compilación beta, por lo que muy pronto pasará de ser experimental a estable.

http://code.google.com/chrome/extensions/dev/experimental.clipboard.html

+0

Estupendo descubrimiento: no tenía conocimiento de la API experimental. Desafortunadamente, parece que esta API solo permite que la extensión * ejecute * una copia. Estoy buscando una manera de ser * notificado * cuando el usuario inicia una copia. – bjoern

+0

No puede hacer eso con las extensiones – BrunoLM

+0

Para ejecutar copiar/pegar/cortar en extensiones, use la API del portapapeles como mencioné anteriormente. Si desea escuchar cuando el usuario inicia una copia, no puede hacer eso con las extensiones.Dado que la API del portapapeles es experimental, puede enviar sus inquietudes acerca de por qué es necesario escuchar eventos de copia. Puede enviar su correo electrónico al grupo [email protected]: http://groups.google.com/a/chromium.org/group/chromium-extensions/topics –

Cuestiones relacionadas