获取剪贴板数据

时间:2009-07-17 15:57:55

标签: javascript jquery clipboard http-get

我正在尝试编写一个Javascript函数,以便在粘贴之前编辑剪贴板中的内容。现在我通过JQuery绑定了事件'paste'来运行。

$(this.elementDoc).bind('paste', function(event){
   self.OnPaste(event);
});

但这并不重要。现在我想从剪贴板获取数据,但我无法了解如何。我会很高兴每一个提示。

3 个答案:

答案 0 :(得分:4)

这是一个艰难的过程。如果我没记错,IE允许访问剪贴板,但默认情况下Firefox不会出于安全问题。我必须为我正在处理的项目执行此操作,并被迫使用执行复制的小型SWF文件。

http://www.jeffothy.com/weblog/clipboard-copy/

答案 1 :(得分:3)

clipboardData可以包含各种潜在格式的数据。它可能会以多种格式添加剪贴板数据。要查看格式,请查看clipboardData.types

剪贴板数据通常包含纯文本,types中列出的第一种类型是MIME类型" text / plain"。如果您从浏览器复制文本,您将在列表中看到两种类型:" text / plain"和" text / html"。根据您传入getData的字符串,您可以获取纯文本或html。好像"文字"是" text / plain"的缩写。和" url"是" text / uri-list"。

的缩写
element.addEventListener('paste', function(event) {
  var cb = event.clipboardData
  if(cb.types.indexOf("text/html") != -1) {        // contains html
    var pastedContent = cb.getData("text/html")
  } else if(cb.types.indexOf("text/html") != -1) { // contains text
    var pastedContent = cb.getData("text/html")
  } else {
    var pastedContent = cb.getData(cb.types[0])    // get whatever it has
  }

  // do something with pastedContent
})

有关如何使用clipboardData.getData的详细信息,请参阅the ugly spec

答案 2 :(得分:2)

以下是如何从IE或Chrome获取它。首先它阻止实际粘贴发生,然后它进行功能检查,然后将变量文本设置为剪贴板文本。有了它,您可以操作文本,然后将其设置为您粘贴的输入/元素的值,或者您想要用它做的任何其他内容。

//get clipboard text
event.preventDefault();
var text = null;
if (window.clipboardData) 
  text = window.clipboardData.getData("Text");
else if (event.originalEvent && event.originalEvent.clipboardData)
  text = event.originalEvent.clipboardData.getData("Text");

//manipulate the text
text = '..do stuff with it..';
//set the text
$(this).val(text);