未捕获的TypeError:无法读取未定义的属性'getData'

时间:2017-01-16 16:32:15

标签: javascript jquery

我正在尝试处理粘贴事件并尝试将富文本转换为纯文本,我在ID为main

的容器中有一个内容可编辑(动态创建)div
$("#main").on("paste","div",function(event){
  event.preventDefault();
  var clipboarddata =  event.clipboardData ||window.clipboardData || event.originalEvent.clipboardData;                  
  var onlytext = clipboarddata.getData('text/plain');
  document.execCommand("insertHTML", false, onlytext);
});
  

未捕获的TypeError:无法读取未定义的属性“getData”

我认为event.clipboarddata不起作用,我的浏览器支持剪贴板API。我正在复制文本并将其粘贴到div中。所以剪贴板应该有一些价值

有人可以解释为什么我clipboardData未定义

2 个答案:

答案 0 :(得分:2)

对于最新的浏览器,Chrome以下线路可以使用。

var clipboarddata = window.event.clipboardData.getData('text');



$(document).ready(function(){

 $("#main").on("paste",function(event){
      event.preventDefault();
      var clipboarddata =  window.event.clipboardData.getData('text');    
      console.log("paste value" + clipboarddata);
      $('#pasteData').text(clipboarddata);
    });
    
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="main" name="first_name" value="" maxlength="100" />
<div>paste value :  <span id="pasteData"><span></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

注意:这是为什么您收到错误。修复错误是另一回事,需要更多信息。

您收到错误的原因是因为当您对变量赋值使用OR运算符时,它将始终指定最后一个的值,即使它是nullfalse或{ {1}}。

基本上,就像这样

undefined

因此,由于这三个都是if (event.clipboardData != null/false/undefined) { //ignore the incorrectness of the truncation var clipboarddata = event.clipboardData; } else if (window.clipboardData != null/false/undefined) { var clipboarddata = window.clipboardData; } else { //default to the last option even if it is null/false/undefined var clipboarddata = event.originalEvent.clipboardData; } ,因此您获得undefined的值event.originalEvent.clipboardDataundefined分配给变量。因此下一行的错误。