console
var Main = {
data() {
return {
tableData: []
}
},
created () {
},
methods: {
handleClick() {
},
getSelect(e) {
let targetNode= this.$refs.biao2
console.log(window.getSelection);
if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNode(targetNode);
selection.removeAllRanges();
selection.addRange(range);
} else if (document.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(targetNode);
range.select();
}
try{
if(document.execCommand('copy', false, true)){
console.log('成功!')
}else{
console.log('失败!')
}
} catch(err){
console.log(err)
}
},
handleCopyImg(){
if(!navigator.clipboard){
console.log('浏览器不支持操作粘贴板!')
return
}
let targetNode= this.$refs.biao1;
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = new Image();
canvas.width = targetNode.width;
canvas.height = targetNode.height;
img.crossOrigin = 'anonymous';
img.src = targetNode.src;
img.onload = ()=>{
debugger
ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);
ctx.drawImage(img,0,0);
canvas.toBlob(async blob =>{
console.log(blob);
const data = [
new ClipboardItem({
[blob.type]: blob
})
];
console.log(navigator.clipboard)
await navigator.clipboard.write(data)
.then(
() => {
console.log("Copied to clipboard successfully")
},
()=>{
console.error("Unable to clipboard successfully")
}
);
});
};
}
}
};
var Ctor = Vue.extend(Main);
new Ctor().$mount('#app')
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<div id="app">
<template>
<div>
<img src="https://scp-static.cicsc.com/uat/spreadChannel/7454145363443712/template7454145363443712.png" ref="biao1" />
<button @click="handleCopyImg" ref="biao2">这是将要被复制的图片</button>
<button @click="getSelect">点击复制文字,所有平台都支持粘贴</button>
</div>
</template>
</div>