9

Obsługuję zdarzenia wklejania dla contenteditable, aby wyczyścić wszystkie znaczniki HTML przed wklejeniem. Wszystkie działa dobrze w Firefox i Chrome. Ale kiedy przetestuję mój kod w IE11, przekazany event object nie jest ClipboardEvent ale DragEvent.Wklejanie nasłuchiwania zdarzeń w przeglądarce Internet Explorer uzyskiwanie niepoprawnych argumentów

Czy jest coś nie tak z moim kodem? Jeśli dodaję detektor jako kod poniżej, powinienem otrzymać zdarzenie schowka. Dlaczego się zaciągam?

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

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

Aby przetestować powyższy przykład, jestem skopiować tekst z Chrome i wkleić do IE. Ale ja kopiuję dowolny tekst z IE, otrzymam ten sam błąd.

Odpowiedz

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); 
}); 

tu obsłużyć wersji IE i innych przeglądarek, jak również.

JSFiddle

+0

HTMLDivElement nie obsługuje 'attachEvent': https://msdn.microsoft.com/ en-us/library/windows/apps/hh868700.aspx – Victor

+0

Wiem, że właśnie dlatego zasugerowałem podejście do architektury jquery. –

+1

Nadal nie dostaję tekstu gry: http://jsfiddle.net/vepo/4t2ofv8n/2/ – Victor

1

e.clipboardData był zawsze null dla mnie na IE, więc wpadłem na to:

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