[英]Is there any way to copy image to clipboard with pure javascript without libraries?
I've tried using document.execCommand('copy') like this site but it didn't work (nothing got copied to my clipboard despite the fact that the console.log said it was successful).我试过像这个网站一样使用 document.execCommand('copy') 但它没有用(尽管 console.log 说它成功,但没有任何东西被复制到我的剪贴板)。 I also used the navigator.clipboard API but that didn't work for my jpg images, and here is its code:
我还使用了 navigator.clipboard API 但这对我的 jpg 图像不起作用,这是它的代码:
navigator.clipboard.write(
[
new ClipboardItem({
'image/jpeg': new Blob( ['media/anime_0.jpg'],{type:'image/jpeg'} )
})
])
.then(e=>{console.log('Copied to clipboard')})
.catch(e=>{console.log(e)})
The above code produces the following error:上面的代码产生以下错误:
DOMException: Sanitized MIME type image/jpeg not supported on write.
Anyone know if I'm doing anything wrong or if it's even possible to copy images to clipboard without using external libraries?任何人都知道我是否做错了什么,或者甚至可以在不使用外部库的情况下将图像复制到剪贴板?
Thanks Keith for the link to: convert image into blob using javascript感谢 Keith 提供的链接: convert image into blob using javascript
This is the solution I used for my app (it will only save images as png, as jpeg/jpg files keep giving me the DOMException error.这是我用于我的应用程序的解决方案(它只会将图像保存为 png,因为 jpeg/jpg 文件不断给我 DOMException 错误。
const img = new Image
const c = document.createElement('canvas')
const ctx = c.getContext('2d')
function setCanvasImage(path,func){
img.onload = function(){
c.width = this.naturalWidth
c.height = this.naturalHeight
ctx.drawImage(this,0,0)
c.toBlob(blob=>{
func(blob)
},'image/png')
}
img.src = path
}
setCanvasImage('media/anime_0.jpg',(imgBlob)=>{
console.log('doing it!')
navigator.clipboard.write(
[
new ClipboardItem({'image/png': imgBlob})
]
)
.then(e=>{console.log('Image copied to clipboard')})
.catch(e=>{console.log(e)})
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.