9

Sto gestendo gli eventi Incolla per un contenteditable per pulire tutti i marcatori HTML prima di incollare. Tutto funziona bene in Firefox e Chrome. Ma quando provo il mio codice in , il event object passato non è un ClipboardEvent ma un DragEvent.Incolla listener di eventi su Internet Explorer che ottiene argomenti errati

C'è qualcosa che non va nel mio codice? Se aggiungo il listener come il codice sotto, dovrei ottenere l'evento negli appunti. Perché mi sto trascinando?

editable.addEventListener('paste', pasteHandler, false); 

http://jsfiddle.net/vepo/4t2ofv8n/

Per testare l'esempio di cui sopra, sono copiare un testo da Chrome e incollare nella IE. Ma io copio qualsiasi testo da IE otterrà lo stesso errore.

risposta

9

EDIT

$(document).ready(function(){ 
    var editable = document.getElementById('editable-div'); 
    var pasteHandler = function(e){ 
     if(e.clipboardData && e.clipboardData.getData) { 
      var pastedText = ""; 
      if (window.clipboardData && window.clipboardData.getData) { // IE 
       pastedText = window.clipboardData.getData('Text'); 
      } else if (e.clipboardData && e.clipboardData.getData) { 
       pastedText = e.clipboardData.getData('text/plain'); 
      } 

      alert(pastedText); 
     } 
     else{ 
      alert('Not paste object!'); 
     } 
    }; 
    editable.addEventListener('paste', pasteHandler, false); 
}); 

qui mi occupo della versione IE e gli altri browser come bene.

JSFiddle

+0

HTMLDivElement non supporta 'attachEvent': https://msdn.microsoft.com/ it-it/library/windows/apps/hh868700.aspx – Victor

+0

So che è per questo che ho suggerito l'approccio al framework jquery. –

+1

Non riesco ancora a leggere il testo di gioco: http://jsfiddle.net/vepo/4t2ofv8n/2/ – Victor

1

e.clipboardData è sempre stato nullo per me su IE, così mi si avvicinò con questo:

var pastedText = ''; 
if (typeof e.clipboardData === 'undefined') 
    pastedText = window.clipboardData.getData('Text') 
else 
    pastedText = e.clipboardData.getData('text/plain')