2012-05-31 15 views
23

Come posso gestire la pasta selezionata tramite clic destro in javascript? Ho provato con l'evento "onpaste" e tutti gli altri eventi html disponibili ma non funziona nulla.Incolla evento in Javascript

+0

Hai provato le soluzioni proposte? –

risposta

2

L'evento non è esposto per impostazione predefinita come "onpaste" IIRC. Si può fare molto semplicemente in jQuery emettendo

jQuery(document).bind('paste', function(e){ alert('paste event caught') }); 
+0

L'evento di incisione viene catturato ma i contenuti non possono essere letti in questo modo, come può "document.addEventListener". –

29

L'evento onpaste dovrebbe funzionare in tutti i browser moderni (UPD tra cui Opera> = 12,10).

Bind in jQuery come questo:

$('#txt').on('paste', function() {console.log('text pasted!')})​ 

Ecco un esempio: http://jsfiddle.net/7N6Xq/

in puro JavaScript sarebbe simile a questa per i browser moderni

elem.addEventListener ("paste", handler, false); // all browsers and IE9+ 

e per versioni precedenti di IE:

elem.attachEvent ("onpaste", handler); // IE<9 

È possibile anche combinare con oninput e altri eventi (cambiamento, PropertyChange, dragdrop, ecc) per creare un monitoraggio relativamente a prova di proiettile di cambiamento contenuti.


Note:

Opera supporta API Clipboard a partire dal Presto/2.10.286 che corrisponde a 12,10 come suggerito here. Blink versions di Opera (a partire da 15) dovrebbe anche supportarlo ma non riesco a testarlo poiché non esiste ancora alcuna versione di Linux.

1

Mi ha sorpreso la domanda # 4532473 è stato chiuso senza risposta su ciò che accade se si desidera catturare l'evento del post-parto. Poiché questo è probabilmente il problema della metà dei casi, un possibile approccio in firefox (testato) consiste nel registrare un evento oninput direttamente nel gestore onpaste e rimuovere il gestore oninput non appena eseguito.

In questo caso, è necessario utilizzare la funzione on onchange anziché oninput. (Non testato)

+0

Per chi è interessato, una semplice implementazione di un [afterpaste] (http://css-tricks.com/snippets/jquery/paste-events/) – PixnBits

1

soluzione Nizza puro JS (come richiesto ...) è disponibile on the Mozilla dev site

<!DOCTYPE html> 
<html> 
<head> 
<title>onpaste event example</title> 
</head> 

<body> 
<h1>Play with this editor!</h1> 
<textarea id="editor" rows="3" cols="80"> 
Try pasting text into this area! 
</textarea> 

<script> 
function log(txt) { 
    document.getElementById("log").appendChild(document.createTextNode(txt + "\n")); 
} 

function pasteIntercept(evt) { 
    log("Pasting!"); 
} 

document.getElementById("editor").addEventListener("paste", pasteIntercept, false); 
</script> 

<h2>Log</h2> 
<textarea rows="15" cols="80" id="log" readonly="true"></textarea> 
</body> 
</html>