当前位置: 首页 > news >正文

复制文本到剪贴板(跨平台兼容)

/**
* 复制文本到剪贴板(跨平台兼容)
* @param text 要复制的文本
* @returns 是否成功
*/
static async copyToClipboard(textData: string): Promise {
try {
// 首先尝试现代剪贴板API
if (navigator.clipboard && navigator.clipboard.writeText) {
try {
await navigator.clipboard.writeText(textData);
console.log('[SandBlockEditorUtils] 使用现代剪贴板API复制成功');
return;
} catch (clipboardError) {
console.warn('[SandBlockEditorUtils] 现代剪贴板API失败,尝试备用方案:', clipboardError);
// 如果是焦点问题,尝试先获取焦点
if (clipboardError.name === 'NotAllowedError') {
// eslint-disable-next-line
try {
// 尝试获取焦点
window.focus();
document.body.focus();
await new Promise((resolve) => setTimeout(resolve, 100)); // 等待100ms
await navigator.clipboard.writeText(textData);
console.log('[SandBlockEditorUtils] 获取焦点后复制成功');
return;
} catch (retryError) {
console.warn('[SandBlockEditorUtils] 重试后仍失败,使用传统方法:', retryError);
}
}
}
}

        // 回退方案:使用传统的execCommand方法console.log('[SandBlockEditorUtils] 使用传统复制方法');const textArea = document.createElement('textarea');textArea.value = textData;textArea.style.position = 'fixed';textArea.style.left = '-9999px';textArea.style.top = '-9999px';document.body.appendChild(textArea);textArea.focus();textArea.select();const successful = document.execCommand('copy');document.body.removeChild(textArea);if (!successful) {throw new Error('传统复制方法也失败了');}console.log('[SandBlockEditorUtils] 传统复制方法成功');} catch (error) {console.error('[SandBlockEditorUtils] 所有复制方法都失败了:', error);throw error;}
}
http://www.jsqmd.com/news/113242/

相关文章:

  • 分享文件:charles-proxy-4.6.3-win64.msi
  • git如何撤销某个冲突的解决
  • 关于本站
  • 2025年12月金包银品牌TOP10品牌:工艺/品控/售后三维分析,新手避坑首选 - 小白条111
  • 物理验证:你选哪款 DRC/LVS
  • 第十七节:高并发秒杀方案各类小问题总结
  • 夕花朝逝
  • 2025年12月中医馆,昆明中医,云南中医馆推荐:行业权威盘点与品质诊疗红榜发布 - 品牌鉴赏师
  • 赫斯特 (Hurst)计算——重标极差法(R/S法)
  • Android ALSA驱动进阶之获取周期帧数snd_pcm_lib_period_frames:用法实例(九十五) - 详解
  • 从研究问题到分析初稿:深度解析PaperXie AI科研工具中数据分析模块在学术写作场景下的辅助逻辑与技能实现路径
  • 详细介绍:Golang Cobra 教程:构建强大的CLI应用
  • 英语_阅读_Incorrect beliefs_待读
  • 基于深度学习的非机动车头盔检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • Unity 拖动物体技术文档
  • 12.19每日总结
  • 研究生必备:7款免费AI论文生成器,效率飙升200%,告别拖延 - 麟书学长
  • OOP-实验六
  • 在 Windows 11 中,以管理员权限打开 CMD(命令提示符)的几种常用方法
  • Git大文件管理与版本回退 - 详解
  • 看三泽纱千香负能量发言有感
  • 完整教程:Live2D形象展示与文本语音播报:打造生动交互体验的完整实现
  • SSM基于信息安全的无锡旅游服务系统5l83d(脚本+源码+数据库+调试部署+研发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 12.19 程序员修炼之道:从小工到专家 - GENGAR
  • 【赵渝强老师】国产金仓数据库的数据库集群
  • RAG的系列文章,有空可以看看
  • Day65-F:\硕士阶段\Java\课程资料\1、黑马程序员Java项目《苍穹外卖》企业级开发实战\sky-take-out-Git-苍穹外卖-swagger-接口文档
  • 【赵渝强老师】MongoDB的数据类型
  • 06.cloundflare的使用
  • 计算机图形学|三维变换与变换矩阵