复制文字功能写入剪切板的坑

主要解决过程是通义千问+测试。这篇文章写的也不错,本文补充几种情况 juejin.cn/post/718686...

核心提示

  • navigator.clipboard.writeText 安卓不支持 且需要 https,不建议用该方法
  • 苹果设备,点击事件触发时必须立即往剪切板里写入内容,若点击后要ajax请求后再往剪切板里写会失败!!!

建议处理流程

  1. 若写入剪切板前要调用接口。设置一个变量 unsupportCopy: myPlatform.includes('mac') || myPlatform.includes('ios') 判断不支持直接写入剪切板的设备
  2. 点击复制按钮时,若设备支持点击事件和写入剪切板直接有时差,就调用下面的方法写入剪切板。若不支持,就弹出弹框,里面展示内容,然后提供一个按钮,点击复制

实现方案

js 复制代码
    copyStrToClipboard(str, successCb) {
      navigator.clipboard
        .writeText(str)
        .then(() => {
          this.$message.success('复制成功!')
          successCb && successCb()
        })
        .catch((err) => {
          this.$message.error(err)
        })
    }

document.execCommand('copy')

js 复制代码
export function copyToClipboard(text, successCB) {
  const textarea = document.createElement('textarea');
  textarea.value = text; // 直接赋值包含换行符的文本
  textarea.style.position = 'fixed'; // 避免滚动问题
  document.body.appendChild(textarea);
  textarea.select();
  try {
    const successful = document.execCommand('copy');
    if (successful) {
      Message.success('复制成功!')
      successCB && successCB()
    } else {
      Message.error('本设备不支持复制!')
    }
  } catch (err) {
    Message.error('复制失败' + err)
  }
  document.body.removeChild(textarea); // 清理
}

注意,此处复制内容的容器是textarea 而不是 document.createElement('input'),若用的是input,若文本里含 \n 是复制不出来换行的

相关推荐
PedroQue993 分钟前
v0.2.0 架构升级:class + reactive 重塑状态管理
前端·uni-app
鶴哥只手遮天3 分钟前
Angular 22 源码级深度解析-第 02 章 编译链路总览:从模板字符串到 `ɵɵ` 指令
前端·开源·angular.js
尘世中一位迷途小书童3 分钟前
别再堆万字 Prompt:用 Agent Skills 给团队写一个「前端 Review」Skill
前端·ai编程·cursor
aixingpan5 分钟前
aixingpan.cn API开发文档:api_docs_bichart_common2接口指南
前端·php
super_Omni8 分钟前
text/PDF/Word → 解析成纯文本 → 分词 → 词表匹配 → 加权打分 → 低于阈值
前端·chrome
阶进遐12 分钟前
浏览器工具自制指南·对话导出(3):消息池设计
前端
SameX16 分钟前
HarmonyOS 用 relationalStore 做阅读统计 App —— 5 张表背后的 5 个 schema 决策
前端
LV技术派28 分钟前
【成为 AI Native Builder · 02】什么是 AI Native Builder:一个人 + AI,交付完整闭环
前端·程序员·ai编程
#麻辣小龙虾#1 小时前
网页布局css中flex+margin的组合布局技巧
开发语言·前端·javascript
叼烟扛炮1 小时前
Linux 学习笔记(四十五):Web 安全基石——Cookie、Session 与 HTTPS 原理解析
linux·前端·网络·笔记·学习·tcp/ip·安全