9

我正在處理粘貼事件contenteditable以在粘貼前清除所有HTML標記。所有作品在FirefoxChrome罰款。但是當我在IE11中測試我的代碼時,event object通過的不是ClipboardEvent,而是DragEvent在Internet Explorer上粘貼事件偵聽器,獲取錯誤參數

我的代碼有問題嗎? 如果我將偵聽器添加爲代碼,我應該得到剪貼板事件。爲什麼我會受到拖累?

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

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

爲了測試上面的例子中,我從鉻複製文本並粘貼到IE。但我從IE複製任何文本都會得到相同的錯誤。

回答

9

編輯

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

這裏我處理IE版本和其他瀏覽器也。

JSFiddle

+0

HTMLDivElement不支持'attachEvent':https://msdn.microsoft.com/ en-us/library/windows/apps/hh868700.aspx – Victor

+0

我知道這就是爲什麼我提出了jQuery框架的方法。 –

+1

我仍然沒有得到播放文本:http://jsfiddle.net/vepo/4t2ofv8n/2/ – Victor

1

e.clipboardData總是空的我的IE瀏覽器,所以我想出了這個:

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