我正在尝试编写一个Javascript函数,以便在粘贴之前编辑剪贴板中的内容。现在我通过JQuery绑定了事件'paste'来运行。
$(this.elementDoc).bind('paste', function(event){
self.OnPaste(event);
});
但这并不重要。现在我想从剪贴板获取数据,但我无法了解如何。我会很高兴每一个提示。
答案 0 :(得分:4)
这是一个艰难的过程。如果我没记错,IE允许访问剪贴板,但默认情况下Firefox不会出于安全问题。我必须为我正在处理的项目执行此操作,并被迫使用执行复制的小型SWF文件。
答案 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);