上一篇
📢 2025年8月最新消息:
Clipboard.js 近日发布 v2.1.0 版本,新增对 WebAssembly 的支持,复制速度提升 30%!Chrome 120+ 已全面禁用 document.execCommand
,建议开发者尽快迁移至现代 Clipboard API。🚀
虽然现代浏览器已支持原生 Clipboard API,但兼容性问题和优雅降级仍是痛点,Clipboard.js 这款 11KB 的轻量级库,能帮你:
在 HTML 中添加一行脚本:
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.1.0/clipboard.min.js"></script>
<!-- 目标文本框 --> <input id="copy-target" value="https://你的网站.com"> <!-- 复制按钮 --> <button class="btn" data-clipboard-target="#copy-target"> 📎 点击复制链接 </button> <script> new Clipboard('.btn').on('success', (e) => { alert('✅ 复制成功!'); e.clearSelection(); // 清除选中状态 }); </script>
<button class="btn" data-clipboard-action="cut" data-clipboard-text="这段文字会被剪切!" > ✂️ 剪切测试 </button>
iOS Safari 需同时满足:
localhost
除外)// 针对Safari的降级处理 if (navigator.userAgent.includes('Safari') && !navigator.userAgent.includes('Chrome')) { document.querySelector('.btn').addEventListener('click', () => { alert('🍎 Safari需长按手动复制'); }); }
const clipboard = new Clipboard('.btn'); clipboard.on('error', (e) => { // 降级到传统方法 const textarea = document.createElement('textarea'); textarea.value = '旧版浏览器复制内容'; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); alert('⚠️ 请手动Ctrl+C复制'); });
// 避免直接插入用户输入的内容 const safeText = DOMPurify.sanitize(userInput); // 使用DOMPurify库 new Clipboard('.btn', { text: () => safeText });
在 iOS Safari 中,需先请求权限:
navigator.permissions.query({ name: 'clipboard-write' }).then(result => { if (result.state === 'granted') { // 已授权,执行复制 } });
// 仅在需要时加载Clipboard.js function loadClipboard() { return new Promise((resolve) => { const script = document.createElement('script'); script.src = 'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.1.0/clipboard.min.js'; script.onload = () => resolve(Clipboard); document.body.appendChild(script); }); } // 使用时 loadClipboard().then(Clipboard => { new Clipboard('.btn'); });
// Vue示例 export default { mounted() { if (window.Clipboard) { new Clipboard('.btn'); } else { import('clipboard').then(module => { new module.default('.btn'); }); } } }
<div class="order-info"> 订单号:<span id="order-id">20250822XXXX</span> <button class="copy-btn" data-clipboard-target="#order-id"> 📋 复制订单号 </button> </div>
const shareUrl = `https://你的网站.com/share?id=${userId}`; new Clipboard('.share-btn', { text: () => shareUrl // 动态生成链接 });
💬 最后提醒:
Clipboard.js 虽然方便,但需注意:
快去试试吧!🎉
本文由 业务大全 于2025-08-22发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/695295.html
发表评论