27 lines
709 B
TypeScript
27 lines
709 B
TypeScript
![]() |
import { useClipboard } from '@vueuse/core';
|
||
|
|
||
|
const { copy, isSupported } = useClipboard();
|
||
|
|
||
|
export async function handleCopy(source?: string) {
|
||
|
if (!isSupported) {
|
||
|
window.$message?.error('您的浏览器不支持 Clipboard API');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (!source) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (navigator.clipboard && window.isSecureContext) {
|
||
|
await copy(source);
|
||
|
} else {
|
||
|
const range = document.createRange();
|
||
|
range.selectNode(document.getElementById('tokenDetailInput')!);
|
||
|
const selection = window.getSelection();
|
||
|
if (selection?.rangeCount) selection.removeAllRanges();
|
||
|
selection?.addRange(range);
|
||
|
document.execCommand('copy');
|
||
|
}
|
||
|
window.$message?.success('复制成功');
|
||
|
}
|