copyexecCommand粘贴板

document.execCommand(“Copy”) - 该API将被浏览器弃用

  1. export function copyAddress(address:String) {
  2. // 动态创建 textarea 标签
  3. const textarea = document.createElement("textarea");
  4. // 将该 textarea 设为 readonly 防止 iOS 下自动唤起键盘,同时将 textarea 移出可视区域
  5. textarea.readOnly = "readonly";
  6. textarea.style.position = "absolute";
  7. textarea.style.left = "-9999px";
  8. // 将要 copy 的值赋给 textarea 标签的 value 属性
  9. textarea.value = address;
  10. // 将 textarea 插入到 body 中
  11. document.body.appendChild(textarea);
  12. // 选中值并复制
  13. textarea.select();
  14. const result = document.execCommand("Copy");
  15. if (
  16. result &&
  17. typeof address === "string"
  18. ) {
  19. window.$message?.success("copy successfully")
  20. }
  21. document.body.removeChild(textarea);
  22. }
  23. /**
  24. * @description 复制内容到剪切板
  25. * @param {string} content 文本内容
  26. */
  27. export function clearClipboard () {
  28. const dom = document.createElement('input');
  29. document.body.appendChild(dom);
  30. dom.value = '';
  31. dom.select();
  32. document.execCommand('copy');
  33. document.body.removeChild(dom);
  34. };

clipboard API

  1. /**
  2. * @description 读取剪切板内容
  3. * @return {string}
  4. */
  5. export async function readClipboard() {
  6. const result = await navigator.permissions.query({ name: 'clipboard-read' });
  7. if (result.state === 'granted' || result.state === 'prompt') {
  8. return navigator.clipboard
  9. .readText()
  10. .then(text => text)
  11. .catch(err => Promise.reject(err));
  12. }
  13. return Promise.reject(result);
  14. }
  15. /**
  16. * @description: 新Clipboard API
  17. * @param {string} text
  18. * @return {*}
  19. */
  20. export async function writeClipboard(text: string, successContent: string) {
  21. try {
  22. await navigator.clipboard.writeText(text);
  23. window.$message?.success(successContent);
  24. } catch (error) {
  25. console.log(error);
  26. }
  27. }
  28. /**
  29. * @description 复制内容到剪切板
  30. * @param {string} content 文本内容
  31. */
  32. export async function clearClipboard () {
  33. try {
  34. await navigator.clipboard.writeText("")
  35. } catch (error) {
  36. console.error('Failed to copy: ', error);
  37. }
  38. };