useCopyText.ts 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. export function handleCopy(copyText: string) {
  2. const textarea = document.createElement('textarea');
  3. textarea.value = copyText; // 要复制的内容
  4. textarea.style.position = 'fixed'; // 避免页面滚动
  5. textarea.style.opacity = '0'; // 隐藏元素
  6. document.body.appendChild(textarea);
  7. textarea.select(); // 选中内容
  8. try {
  9. const successful = document.execCommand('copy'); // 执行复制命令
  10. if (successful) {
  11. ElMessage.info({
  12. dangerouslyUseHTMLString: true,
  13. message: `<div class="flex items-center">
  14. <div class="font-medium text-ellipsis line-clamp-1" style="color: #1D2129; max-width: 300px">${ textarea.value }</div>
  15. <div class="ml-2">已复制至剪切板</div>
  16. </div>`,
  17. plain: true,
  18. icon: 'DocumentCopy'
  19. });
  20. } else {
  21. ElMessage.error({ message: '复制失败,请手动复制!', plain: true });
  22. }
  23. } catch (error) {
  24. ElMessage.error({ message: '复制失败,请重试!', plain: true });
  25. console.error('复制失败:', error);
  26. }
  27. document.body.removeChild(textarea); // 清理临时元素
  28. }