ho trovato la seguente soluzione:
- Impostare un file manifesto per definire uno script contenuto che viene aggiunto ad ogni pagina e una pagina di sfondo separata.
- 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.
- 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({});
});
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