Fix paste image when image copied from web browser

This commit is contained in:
kPherox 2019-03-23 05:51:22 +09:00
parent 7556e5560d
commit 100bd648a9
No known key found for this signature in database
GPG Key ID: C04751C2BFA2F62D

View File

@ -183,22 +183,20 @@ function toBlob(base64, type) {
var element = document.querySelector("#textarea"); var element = document.querySelector("#textarea");
element.addEventListener("paste", function(e){ element.addEventListener("paste", function(e){
console.log(e) console.log(e)
// 画像の場合 if (!e.clipboardData || !e.clipboardData.items) {
// e.clipboardData.types.length == 0 return true;
// かつ }
// e.clipboardData.types[0] == "Files" // DataTransferItemList に画像が含まれいない場合は終了する
// となっているので、それ以外を弾く var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
if (!e.clipboardData if (imageItems.length == 0) {
|| !e.clipboardData.types
|| (e.clipboardData.types.length != 1)
|| (e.clipboardData.types[0] != "Files")) {
console.log("not image") console.log("not image")
return true; return true;
} }
// ファイルとして得る // ファイルとして得る
// (なぜかgetAsStringでは上手くいかなかった) // DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
var imageFile = e.clipboardData.items[0].getAsFile(); var imageFile = imageItems[0].getAsFile();
var imageType = imageItems[0].type;
// FileReaderで読み込む // FileReaderで読み込む
var fr = new FileReader(); var fr = new FileReader();
@ -209,7 +207,8 @@ element.addEventListener("paste", function(e){
if(mediav){ if(mediav){
var i=mediav.split(",").length; var i=mediav.split(",").length;
} }
media(base64, "image/png", i) // DataTransferItem の type に mime tipes があるのでそれを使う
media(base64, imageType, i)
}; };
fr.readAsDataURL(imageFile); fr.readAsDataURL(imageFile);