Tom*_*ica 5 javascript google-chrome
所以我试图理解Google Chrome 中的pasteAPI copy。我也不明白。
从复制开始,您可能需要使用 javascript在剪贴板中添加一些内容。我正在处理图像(实际上字符串效果很好1):
//Get DataTransferItemList
var files = items.items;
if(files) {
console.log(files);
//Create blob from canvas
var blob = Blob.fromDataURL(_this.editor.selection.getSelectedImage().toDataURL("image/png"));
var file;
try {
//Try to create file from blob, which may fail
file = new File([blob], "image.png", {type:"image/png"});
}
catch(e) {
return false;
}
if(file) {
//I think this should clear previous data from clipboard
files.clear();
//Add a file as image/png
files.add(file, "image/png");
}
//console.log(files.add(file));
}
Run Code Online (Sandbox Code Playgroud)
问题是,我真的不知道该add方法是如何工作的。我找到了DataTransferItemList 的“文档” ,其中写着:
add(any data, optional DOMString type)
Run Code Online (Sandbox Code Playgroud)
有什么数据吗?(怎么会有人在文档中写这个?)虽然有些东西被添加到剪贴板,但我不知道它是什么。我无法将其粘贴到任何地方 - 除了 Chrome。如果我使用复制的文件检查粘贴事件,则该事件位于 DataTransferItemList 中:

它可以转换为文件,但如果我尝试将其转回<img>:
ImageEditorKeyboard.prototype.processFile = function(file) {
//File reader converts files to something else
var reader = new FileReader();
//Refference to this class
var _this = this;
//happens when the file is loaded
reader.onload = function(event) {
var img = new Image;
img.onload = function() {
_this.processImage(this);
};
img.src = event.target.result;
}; // data url!
//Read file
reader.readAsDataURL(file);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误2:

如果我记录它的值,event.target.result结果发现数据是空的:
console.error("String '", event.target.result, "' ain't a valid URL!");
Run Code Online (Sandbox Code Playgroud)

DataTransferItemList,它的方法和属性,特别是.add方法?1:要将字符串添加到剪贴板(当然是在复制事件期间!),请调用此命令:event.clipboardData.setData(data, "text/plain");。第二个参数似乎没有任何功能 - usingimage/png不会执行任何操作。
2:有趣的是这个错误无法被捕获。
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |