2014-11-03 13 views
6

utilizzando jQuery, posso rilevare quando l'utente copia qualcosa (come testo) con Ctrl-C o attraverso il menu contestuale:Come posso rilevare un evento del browser "copia immagine"?

$(document).on('copy',function(e){$('body').prepend('copy event <br>');}); 

Tuttavia, l'evento non sembra per attivare quando l'immagine viene copiata. Come posso rilevare la copia dell'immagine? In particolare mi piacerebbe rilevare la copia da un elemento <canvas>, ma qualsiasi <img> dovrebbe fare come punto di partenza per comprendere questo problema.

test di scenario: http://jsfiddle.net/jm23xe8w/

+0

Questo potrebbe aiutarti: http://www.quirksmode.org/dom/events/cutcopypaste.html – gurudeb

+0

Qual è il tuo obiettivo di catturare questo evento? –

+0

@AlmaDo Ho bisogno che gli utenti copino l'immagine negli appunti, quindi tornino al browser: ciò consentirà l'utilizzo di dati pixel da immagini di origine di immagini cross-site (senza rischi per la sicurezza, poiché è un'azione esplicita dell'utente farlo). Quindi, quando avviano un evento di copia, abiliterò la funzionalità Incolla per renderlo intuitivo come funziona. – tmpearce

risposta

0

browser non ha caso le immagini di copia, quindi è necessario simulare da alcuni tricks.also appunti non salvare le immagini in it.Clipboard salva solo testi in itself.You bisogno per convertire le immagini in una stringa codificata in base64, quindi salvarlo negli appunti e incollarlo nella tua app.Ma c'è un problema con questo che sono i dati degli Appunti, le immagini copiate o ci sono altri dati di qualche altra applicazione in esso.Per questo, è possibile aggiungere una stringa univoca alla stringa codificata all'inizio e alla fine e controllarla ovunque si desideri incollarla. Per convertire le immagini nella stringa base64encode è possibile utilizzare questo codice:

function getImageData(img) { 
    var canvas = document.createElement("canvas"); 
    canvas.width = img.width; 
    canvas.height = img.height; 
    var ctx = canvas.getContext("2d"); 
    ctx.drawImage(img, 0, 0); 
    var imgd = canvas.toDataURL("image/png"); 
    return imgd; 
} 

Passare il tag img a questa funzione per ottenere il risultato.

Problemi correlati