2010-05-20 5 views

risposta

4

ho trovato la seguente soluzione:

  1. Impostare un file manifesto per definire uno script contenuto che viene aggiunto ad ogni pagina e una pagina di sfondo separata.
  2. Nel file .js Content Script, aggiungere un listener di eventi per l'evento 'copia', per il documento o la finestra. Questo listener di eventi viene chiamato ogni volta che l'utente avvia un'azione di copia.
  3. Poiché gli script di contenuto sono presenti in una sandbox di sicurezza (ad esempio, nessun XMLHttpRequests tra i siti), è probabile che si desideri rispondere all'evento nella pagina di sfondo. Per farlo, utilizza l'API di passaggio dei messaggi di Chrome, quindi invia un messaggio alla pagina di sfondo.

Un piccolo esempio di lavoro:

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

Si dovrà catturare onkeypress sull'elemento documento utilizzando il proprio Handler evento, controllare che event.keyCode = 'C' (o il codice ASCII) e che l'event.ctrlKey = true

Se questa è la valido, quindi è probabile che l'utente abbia copiato del testo nella pagina corrente.

È necessario anche acquisire l'evento tab.updated in modo da sapere quando associare l'evento onkeypress.

+0

Grazie, è un buon inizio per rilevare gli eventi di copia eseguiti tramite scorciatoie da tastiera. Probabilmente avrò bisogno di un meccanismo diverso per rilevare il menu Modifica-> copia le chiamate, all'esterno di Javascript. – bjoern

0

Google Chrome Extensions ha un'API sperimentale da utilizzare che ti consentirà di eseguire una copia, tagliare e incollare. Esiste attualmente nella versione beta, quindi molto presto, sarà fuori sperimentale in stabile.

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

+0

Grande scoperta: non ero a conoscenza dell'API sperimentale. Sfortunatamente, sembra che questa API consenta solo all'estensione di * eseguire * una copia. Sto cercando un modo per essere * notificato * quando l'utente avvia una copia. – bjoern

+0

Non è possibile farlo con le estensioni – BrunoLM

+0

Per eseguire copia/incolla/taglia nelle estensioni, si utilizza l'API degli Appunti come menzionato sopra. Se si desidera ascoltare quando l'utente avvia una copia, non è possibile farlo con le estensioni.Poiché l'API degli Appunti è sperimentale, puoi inviare i tuoi dubbi sul motivo per cui è necessario ascoltare gli eventi di copia. Puoi inviare la tua email al gruppo [email protected]: http://groups.google.com/a/chromium.org/group/chromium-extensions/topics –

Problemi correlati