javascript - 未捕获的 TypeError : item. getData 不是函数

标签 javascript html clipboarddata

我想将剪贴板内容粘贴到 html 页面上。内容是从 ms-word 文件复制的。包含文字和图像。考虑以下代码:

<div id="pasteArea" contenteditable="True"></div>
<script type="text/javascript">
    var pasteArea = document.getElementById('pasteArea');
    pasteArea.onpaste = function (event) {
        event.preventDefault();
        event.stopPropagation();
        var items = (event.clipboardData || event.originalEvent.clipboardData).items;
        for (index in items) {
            var item = items[index];
            if(item.kind === 'string'){
                console.log(item.getData('text'));
                // Getting the error in here!
            }
            else if(item.kind === 'file'){
                // Code for handling images
            }
        }
    }
</script>

我尝试使用 event.clipboardData.getData('text'); 但它会获取整个文本(即跳过中间的图像),并且文本格式也会丢失。

您知道如何处理上述情况吗?谢谢。

最佳答案

您正在寻找需要回调来处理剪贴板的 getAsString。

https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/getAsString

const pasteArea = document.getElementById('pasteArea');

pasteArea.onpaste = event => {
  event.preventDefault();

  const { items } = event.clipboardData;
  for (const item of items) processClipboard(item)
}

const processClipboard = item => {
  if (item.kind === 'string' && item.type === 'text/plain') {

    item.getAsString(s => console.log(s))

  }
}
div { background-color: #ccc; }
<div id="pasteArea" contenteditable="True">Paste something here</div>

关于javascript - 未捕获的 TypeError : item. getData 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54944973/

相关文章:

javascript - 如何在 2 个 SVG 之间交替转换

javascript - 迭代不确定的延迟项目数组

javascript - 检查标签是否支持 CSS 属性

javascript - 我应该在 html 标记中添加 "javascript:"吗?

eclipse - Eclipse 中的剪贴板历史记录

javascript - JQuery 插件是否应该负责创建新的 HTML?

javascript - 请引用我的以下代码。我想使用ajax在 View 中显示数据,但我收到错误[obect object]]

javascript - 动态数据更新,无需刷新或重新加载

javascript - 使用 JavaScript 和 Google Chrome API 将剪贴板数据存储到变量中

c# - 如何从 C# 中的剪贴板历史记录中获取所有数据的列表?